3 votes

Recherche avancée mongodb en utilisant mongomapper, sunspot/solr ou sphinx?

Je utilise mongodb avec mongomapper pour stocker tous mes produits. Chaque produit appartient à plusieurs catégories qui ont plusieurs niveaux, c'est-à-dire catégorie, sous-catégorie, etc. Chaque produit a plusieurs champs de recherche qui sont des documents imbriqués dans le produit.

Tout cela fonctionne et je veux maintenant ajouter la recherche à l'application.

Le système de recherche nécessite une recherche de texte : recherche multiple, dynamique, par facettes comprenant une recherche de plage min/max.

Je me suis penché sur la gemme sunspot mais j'ai du mal à la configurer en développement, sans parler de l'exécuter en production! J'ai aussi regardé sphinx.

Mais je me demande si l'utilisation uniquement de mongomapper / mongodb sera suffisamment rapide et la meilleure solution, étant donné que c'est un système de recherche assez complexe ?

Toute aide / suggestion / expérience / tutoriel et exemple sur ce sujet serait grandement apprécié.

Merci beaucoup,

Rick

1voto

Bryan Migliorisi Points 4057

J'ai été impliqué dans une recherche alimentée par Sphinx très importante et je pense que c'est terrible. Très difficile à configurer si vous voulez quelque chose de plus qu'une simple recherche en texte intégral. Solr\Lucene, en revanche, est incroyablement flexible et a été incroyablement plus facile à configurer et à mettre en service.

Je n'utilise pas Solr en conjonction avec MongoDB pour alimenter la recherche en texte intégral avec toutes les fonctionnalités supplémentaires, comme les facettes, etc. Selon la manière dont vous configurez Solr, vous n'aurez peut-être même pas besoin d'accéder à votre MongoDB pour les données. Ou, vous pouvez indiquer à Solr d'indexer des champs, mais de ne pas les stocker et au lieu de cela, vous ne stockez que les ObjectId qui correspondent aux données à l'intérieur de MongoDB.

Si votre recherche est vraiment un système de recherche complexe, je vous recommande vivement de ne pas utiliser MongoDB pour la recherche et d'opter pour Solr. Une grande raison en est que MongoDb n'a pas de fonctionnalité de recherche en texte intégral - à la place, il a des correspondances d'expressions régulières. Les correspondances Regex fonctionnent à merveille mais n'utiliseront des index que dans certains cas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X