Je recherche un serveur de recherche en texte intégral autonome avec les propriétés suivantes:
- Doit fonctionner comme un serveur autonome pouvant répondre aux demandes de recherche de plusieurs clients
- Doit être capable de faire une "indexation en masse" en indexant le résultat d'une requête SQL: dites "SELECT id, text_to_index FROM documents;"
- Doit être un logiciel libre et doit fonctionner sous Linux avec MySQL comme base de données
- Doit être rapide (exclut la recherche interne de texte intégral de MySQL)
Les alternatives que j'ai trouvées qui ont ces propriétés sont:
- Solr (basé sur Lucene)
- ElasticSearch (également basé sur Lucene)
- Sphinx
Mes questions:
- Comment se comparent-ils?
- Ai-je manqué des alternatives?
- Je sais que chaque cas d'utilisation est différent, mais y a-t-il certains cas où je ne voudrais certainement pas utiliser un certain package?
Réponses:
J'utilise Solr avec succès depuis presque 2 ans maintenant, et je n'ai jamais utilisé Sphinx, donc je suis évidemment partial. Cependant, je vais essayer de garder cela objectif en citant les documents ou d'autres personnes. Je vais également apporter des correctifs à ma réponse :-)
Similitudes:
Voici quelques différences:
java -jar start.jar
). Sphinx n'a pas de configuration supplémentaire.Questions connexes:
la source
À moins que vous n'ayez besoin d'étendre la fonctionnalité de recherche d'une manière propriétaire, Sphinx est votre meilleur pari.
Avantages Sphinx:
Avantages Solr:
la source
Remarque: de nombreux utilisateurs ont la même question en tête.
Donc, pour répondre à l'essentiel:
Lequel et pourquoi?
Utilisez Solr si vous avez l'intention de l'utiliser dans votre application Web (moteur de recherche d'exemples de sites). Cela s'avérera certainement génial, grâce à son API. Vous aurez certainement besoin de cette puissance pour une application Web.
Utilisez Sphinx si vous souhaitez rechercher rapidement des tonnes de documents / fichiers. Il indexe très rapidement aussi. Je recommanderais de ne pas l'utiliser dans une application qui implique JSON ou l'analyse XML pour obtenir les résultats de la recherche. Utilisez-le pour les recherches directes en dB. Cela fonctionne très bien sur MySQL.
Alternatives
Bien que ce soient les géants, il y en a beaucoup plus. En outre, il y a ceux qui les utilisent pour alimenter leurs frameworks personnalisés. Donc, je dirais que vous n'en avez vraiment manqué aucun. Bien qu'il existe un elasticsearch qui a une bonne base d'utilisateurs.
la source
J'utilise Sphinx depuis presque un an maintenant, et c'est incroyable. Je peux indexer 1,5 million de documents en une minute environ sur mon MacBook, et même plus rapidement sur le serveur. J'utilise également Sphinx pour limiter les recherches à des endroits dans des latitudes et des longitudes spécifiques, et c'est très rapide. En outre, la façon dont les résultats sont classés est très modifiable. Facile à installer et à configurer, si vous lisez un ou deux tutoriels. Presque 1.0, mais leurs Release Candidates ont été solides comme le roc.
la source
Lucene / Solr semble être plus en vedette et avec de plus longues années d'activité et une communauté d'utilisateurs beaucoup plus forte. à mon humble avis, si vous pouvez surmonter les problèmes de configuration initiale, comme certains semblent avoir été confrontés (pas nous), je dirais que Lucene / Solr est votre meilleur pari.
la source