web-dev-qa-db-fra.com

Choisir un serveur de recherche plein texte autonome: Sphinx ou SOLR?

Je recherche un serveur de recherche en texte intégral autonome doté des propriétés suivantes:

  • Doit fonctionner comme un serveur autonome pouvant traiter les demandes de recherche de plusieurs clients
  • Doit pouvoir effectuer 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 plein texte interne 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 raté des alternatives?
  • Je sais que chaque cas d'utilisation est différent, mais y a-t-il des cas où je voudrais certainement pas utiliser un certain paquet?
192
knorv

J'utilise Solr avec succès depuis près de 2 ans maintenant et je n'ai jamais utilisé Sphinx. Je suis donc manifestement partial. Cependant, je vais essayer de rester objectif en citant les docs ou d’autres personnes. Je vais aussi prendre des correctifs à ma réponse :-)

Similitudes:

  • Solr et Sphinx répondent à toutes vos exigences. Ils sont rapides et conçus pour indexer et rechercher efficacement de gros volumes de données.
  • Tous les deux ont une longue liste de sites à fort trafic qui les utilisent ( Solr , Sphinx )
  • Les deux offrent un support commercial. ( Solr , Sphinx )
  • Les deux offrent des liaisons d'API client pour plusieurs plates-formes/langues ( Sphinx , Solr )
  • Les deux peuvent être répartis pour augmenter la vitesse et la capacité ( Sphinx , Solr )

Voici quelques différences:

Questions connexes:

324
Mauricio Scheffer

Sphinx est votre meilleur choix, à moins que vous n'ayez besoin d'étendre la fonctionnalité de recherche de manière propriétaire.

Les avantages du Sphinx:

  1. Le développement et la configuration sont plus rapides
  2. Une agrégation bien meilleure (et plus rapide). Ce fut la fonctionnalité tueur pour nous.
  3. Pas de XML. C'est ce qui a finalement été exclu de Solr pour nous. Nous avons dû renvoyer des ensembles de résultats assez volumineux (pensez à des centaines de résultats), puis les regrouper nous-mêmes, car l'agrégation de Solr faisait défaut. Le temps nécessaire à la sérialisation vers et à partir de XML a totalement compromis les performances. Pour de petits ensembles de résultats cependant, c'était parfaitement correct.
  4. Meilleure documentation que j'ai vue dans une application open source

Solr avantages:

  1. Peut être étendu.
  2. Vous pouvez y accéder directement à partir d’une application Web, c’est-à-dire que vous pouvez faire en sorte que des recherches de type autocomplete s’appliquent directement au serveur Solr via AJAX.
47
larf311

Remarque: de nombreux utilisateurs ont la même question à l'esprit.

Donc, pour répondre à la question:

Lequel et pourquoi?

  • Utilisez Solr si vous avez l’intention de l’utiliser dans votre application Web (exemple de moteur de recherche de site). Ce sera certainement génial, grâce à son API. Vous aurez certainement besoin de ce pouvoir pour une application Web.

  • Utilisez Sphinx si vous souhaitez effectuer une recherche très rapide dans des tonnes de documents/fichiers. Il indexe très vite aussi. Je recommanderais de ne pas l'utiliser dans une application impliquant JSON ou l'analyse XML pour obtenir les résultats de la recherche. Utilisez-le pour des 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. De plus, certains utilisent ces outils pour alimenter leurs infrastructures personnalisées. Donc, je dirais que vous n'en avez vraiment manqué. Bien qu'il y ait un elasticsearch qui a une bonne base d'utilisateurs.

20
Augiwan

J'utilise Sphinx depuis presque un an maintenant et c'était incroyable. Je peux indexer 1,5 million de documents en une minute environ sur mon MacBook et encore plus rapidement sur le serveur. J'utilise également Sphinx pour limiter les recherches à des endroits situés sous des latitudes et des longitudes spécifiques, et c'est très rapide. En outre, le classement des résultats est très modifiable. Facile à installer et à configurer, si vous lisez un tutoriel ou deux. Presque 1,0 statut, mais leurs candidats à la libération ont été solides.

19
lo_fye

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 parvenez à surmonter les problèmes de configuration initiaux que certains semblent avoir rencontrés (pas nous), je dirais alors que Lucene/Solr est votre meilleur choix.

2