Choisir un serveur de recherche en texte intégral autonome: Sphinx ou SOLR? [fermé]

192

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?
knorv
la source
1
Avez-vous exclu d'utiliser directement Lucene? Solr est un service en plus de lucene, donc le droit Lucene pourrait encore être une possibilité.
Dave
Lucene a-t-il un mode serveur autonome? Je pensais que c'était l'une des choses ajoutées par SOLR? Je n'ai rien exclu - alors n'hésitez pas à défendre Lucene si c'est le meilleur choix compte tenu des exigences :-)
knorv
mausch: Principalement Java mais aussi d'autres langages.
knorv
Personnellement, j'aime Sphinx. Cependant, lors d'un "grand" projet récemment, la dernière version candidate (0.9.9-rc2) avait des bogues d'arrêt lors de l'utilisation de tableaux à valeurs multiples (MVA). Ce serait des résultats aléatoires! Nous sommes donc passés à SOLR pour contourner ce problème. Une fois que SOLR était opérationnel, les performances étaient bonnes, et sans le bogue de stopper.
pchap10k
2
Avez-vous regardé elasticsearch.com?
FYA

Réponses:

327

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:

  • Solr et Sphinx satisfont toutes vos exigences. Ils sont rapides et conçus pour indexer et rechercher efficacement de grands volumes de données.
  • 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 distribués pour augmenter la vitesse et la capacité ( Sphinx , Solr )

Voici quelques différences:

Questions connexes:

Mauricio Scheffer
la source
4
En parlant des développeurs qui s'engagent à la fois envers Solr et Lucene, il semble qu'ils ont fusionné les deux produits pour faciliter et accélérer le développement ultérieur - lucidimagination.com/blog/2010/03/26/… .
jimmystormig
3
@Stann: comment ça? J'utilise Solr depuis près de 5 ans et je n'ai jamais eu besoin d'écrire une seule ligne de Java.
Mauricio Scheffer
@MauricioScheffer Pensez-vous vraiment que le code java sera plus rapide que C ++. Voici la comparaison faite par Bill Karwin et Sphinx, il interroge les choses 10 fois plus vite que lucene (et solr doit être encore plus lent que.) Slideshare.net/billkarwin
Stann
3
@Stann: pensez-vous vraiment que vous avez besoin de plus de performances que whitehouse.gov, Netflix, The Guardian, digg, pour ne nommer que quelques sites Web utilisant Solr? wiki.apache.org/solr/PublicServers
Mauricio Scheffer
3
Voici une réponse sur Sphinx qui est une bonne paire à cette réponse sur Solr
New Alexandria
48

À 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:

  1. Le développement et la configuration sont plus rapides
  2. Agrégation bien meilleure (et plus rapide). C'était la fonctionnalité qui tue pour nous.
  3. Pas XML. C'est ce qui a finalement exclu Solr pour nous. Nous avons dû retourner des ensembles de résultats assez volumineux (pensez à des centaines de résultats), puis les agréger nous-mêmes car l'agrégation Solr faisait défaut. Le temps nécessaire pour sérialiser vers et depuis XML a complètement tué les performances. Pour les petits ensembles de résultats, c'était parfaitement bien.
  4. Meilleure documentation que j'ai vue dans une application open source

Avantages Solr:

  1. Peut être prolongé.
  2. Vous pouvez le frapper directement à partir d'une application Web, c'est-à-dire que vous pouvez avoir des recherches de type autocomplétion sur le serveur Solr directement via AJAX.
larf311
la source
29
Solr a de nombreux rédacteurs de réponses autres que xml, y compris JSON, PHP, Ruby, Python et un format binaire java: lucene.apache.org/solr/api/org/apache/solr/request/…
Mauricio Scheffer
24
Ai-je mentionné à quel point la documentation Solr / Lucene est terrible? Avoir à parcourir Javadocs pour comprendre les fonctionnalités n'est pas mon idée de la documentation.
larf311
3
J'aurais dû créer
Mauricio Scheffer
2
Je passe toute la journée à corriger un bug d'installation de sphinx 0.9.9 sur mon mac. Jusqu'à présent, cela ne fonctionne toujours pas. C'est tellement bogué. J'ai utilisé des moyens très suggérés. Je suis givin up Vraiment frustrant ...
lkahtz
La documentation de solr n'est pas aussi bonne que celle de sphinx. mais la communauté est grande. Et je peux toujours tout comprendre en lisant le code source de solr.
Tyler Long
21

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.

Augiwan
la source
13
ce moment gênant où je lis cette réponse après un an et demi et clique sur upvote et vois que j'ai écrit cette réponse moi-même. lol. : Un petit ajout à ceci cependant: après 18 mois, elasticsearch s'est avéré être une excellente alternative et a également une communauté décente. Cool, bonsaï cool!
Augiwan
Auguste! Ce moment gênant: D. Alors, pour une application Web Python, que pensez-vous être le meilleur maintenant? Solr ou recherche élastique basée sur les performances, l'utilisation de la mémoire et la facilité de configuration d'une idée?
Mevin Babu le
La langue dans laquelle l'application Web est écrite n'a pas d'importance. Choisissez en fonction de votre cas d'utilisation!
Augiwan
19

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.

lo_fye
la source
3
La recherche géographique peut être effectuée dans Solr avec le plugin LocalSolr
Mauricio Scheffer
1
vous pouvez INDEX 1,5 million de documents en une minute? Je ne peux même pas me rapprocher de LIRE autant de fichiers - directement à partir de 7zip (pas d'écriture, de sortie sur la console) sur mon SSD! Et c'est 2017! De quel genre de documents s'agit-il? C'est assez incroyable. Remarque: j'espère que vous ne vouliez pas rechercher l'index de 1,5 million en une minute. Les recherches d'un index avec 1,5 million de documents devraient toujours revenir en quelques secondes (même en 2009).
FastAl
2

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.

Angsuman Chakraborty
la source
La communauté des utilisateurs est un point important. Il y a quelques personnes TRÈS, TRÈS utiles dans les forums Sphinx, mais il n'y a pas de communauté forte autrement.
mlissner