446 votes

ElasticSearch, Sphinx, Lucene, Solr, Xapian. Lequel convient à quel usage ?

J'étudie actuellement d'autres méthodes de recherche plutôt que d'avoir une énorme requête SQL. J'ai vu elasticsearch récemment et a joué avec whoosh (une implémentation Python d'un moteur de recherche).

Pouvez-vous donner les raisons de votre (vos) choix ?

813voto

kimchy Points 4510

En tant que créateur d'ElasticSearch, je peux peut-être vous expliquer pourquoi je l'ai créé en premier lieu :).

L'utilisation de Lucene pur est un défi. Il y a beaucoup de choses dont vous devez prendre soin si vous voulez qu'il soit vraiment performant, et aussi, c'est une bibliothèque, donc pas de support distribué, c'est juste une bibliothèque Java intégrée que vous devez maintenir.

En termes de convivialité de Lucene, il y a longtemps (presque 6 ans maintenant), j'ai créé Compass. Son objectif était de simplifier l'utilisation de Lucene et de rendre le quotidien de Lucene plus simple. Ce que j'ai rencontré à maintes reprises, c'est la nécessité de pouvoir distribuer Compass. J'ai commencé à y travailler à partir de Compass, en intégrant des solutions de grille de données comme GigaSpaces, Coherence et Terracotta, mais cela ne suffit pas.

À la base, une solution Lucene distribuée doit être sharded. De plus, avec l'avancée de HTTP et JSON en tant qu'API omniprésentes, cela signifie qu'une solution pouvant être utilisée par de nombreux systèmes différents avec des langages différents peut facilement être utilisée.

C'est pourquoi j'ai créé ElasticSearch. Il possède un modèle distribué très avancé, parle JSON de manière native et expose de nombreuses fonctionnalités de recherche avancées, le tout exprimé de manière transparente par le DSL JSON.

Solr est également une solution pour exposer un serveur d'indexation/de recherche via HTTP, mais je dirais que ElasticSearch offre un modèle distribué et une facilité d'utilisation bien supérieurs (bien qu'il y ait actuellement des lacunes dans certaines fonctions de recherche, mais pas pour longtemps, et de toute façon, le plan est de faire en sorte que toutes les applications de l Compass dans ElasticSearch). Bien sûr, je suis partial, puisque j'ai créé ElasticSearch, donc vous devrez peut-être vérifier par vous-même.

Quant à Sphinx, je ne l'ai pas utilisé, donc je ne peux pas faire de commentaires. Ce que je peux vous conseiller, c'est ce fil de discussion sur le forum Sphinx ce qui, je pense, prouve la supériorité du modèle distribué d'ElasticSearch.

Bien sûr, ElasticSearch a beaucoup plus de fonctionnalités que la simple distribution. Il est en fait construit avec le cloud en tête. Vous pouvez consulter la liste des fonctionnalités sur le site.

72voto

tommy chheng Points 3156

J'ai utilisé à la fois Sphinx, Solr et Elasticsearch. Solr/elasticsearch sont construits au-dessus de Lucene. Ils ajoutent de nombreuses fonctionnalités communes : api pour serveur web, facettes, mise en cache, etc.

Si vous voulez juste avoir une configuration simple de recherche plein texte, sphinx est un meilleur choix.

Si vous souhaitez personnaliser votre recherche, elasticsearch et solr sont les meilleurs choix. Ils sont très extensibles : vous pouvez écrire vos propres plugins pour ajuster le score des résultats.

Quelques exemples d'utilisation :

  • Sphinx : craigslist.org
  • Solr : Cnet, Netflix, digg.com
  • Elasticsearch : Foursquare, Github

67voto

Yuval F Points 15248

Nous utilisons régulièrement Lucene pour indexer et rechercher des dizaines de millions de documents. Les recherches sont assez rapides, et nous utilisons des mises à jour incrémentielles qui ne prennent pas un long moment. Il nous a fallu un certain temps pour en arriver là. Les points forts de Lucene sont son évolutivité, une large large éventail de fonctionnalités et une communauté active de développeurs. Utilisation Lucene nécessite une programmation en Java.

Si vous commencez à zéro, l'outil pour vous dans la famille Lucene est Solr qui est beaucoup plus facile à mettre en place que Lucene nu, et qui possède presque toute la puissance de Lucene. Il peut importer facilement des documents de base de données. Solr est écrit en Java, donc toute modification de Solr nécessite des connaissances en Java, mais vous pouvez faire beaucoup de choses en ajustant simplement les fichiers de configuration.

J'ai également entendu de bonnes choses sur Sphinx, en particulier en conjonction avec une base de données MySQL. Je ne l'ai pas utilisé, cependant.

IMO, vous devriez choisir en fonction de :

  • La fonctionnalité requise - par exemple, avez-vous besoin d'un égreneur français ? Lucene et Solr en ont un, je ne sais pas pour les autres.
  • Maîtrise du langage d'implémentation - Ne touchez pas à Java Lucene si vous ne connaissez pas Java. Vous aurez peut-être besoin de C++ pour faire des choses avec Sphinx. Lucene a également été porté en autre langues . C'est surtout important si vous voulez étendre le moteur de recherche.
  • Facilité d'expérimentation - je pense que Solr est le meilleur dans ce domaine.
  • Interfacer avec d'autres logiciels - Sphinx a une bonne interface avec MySQL. Solr supporte les interfaces ruby, XML et JSON en tant que serveur RESTful. Lucene ne vous donne qu'un accès programmatique via Java. Compass y Recherche Hibernate sont des enveloppes de Lucene qui l'intègrent dans des cadres plus larges.

23voto

Emiliano M. Points 101

Nous utilisons Sphinx dans un projet de recherche verticale avec plus de 10.000.000 d'enregistrements MySql et plus de 10 bases de données différentes. Il a un excellent support pour MySQL et une haute performance sur l'indexation, la recherche est rapide mais peut-être un peu moins que Lucene. Cependant, c'est le bon choix si vous avez besoin d'une indexation rapide tous les jours et que vous utilisez une base de données MySQL.

18voto

Karussell Points 7034

Une expérience pour comparer ElasticSearch et Solr

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