Le choix d'une recherche en texte intégral serveur autonome: Sphinx ou SOLR? [fermé]
-
18-09-2019 - |
Question
Je suis à la recherche d'une recherche en texte intégral serveur autonome avec les propriétés suivantes:
- doit fonctionner comme un serveur autonome qui peut répondre à des demandes de recherche de plusieurs clients
- Doit être capable de faire « l'indexation en vrac » par l'indexation du résultat d'une requête SQL: dire « SELECT id, text_to_index des documents; »
- Doit être un logiciel libre et doit fonctionner sur Linux avec MySQL comme base de données
- doit être rapide (règles internes sur la recherche de texte intégral de MySQL)
Les alternatives que j'ai trouvé 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 oublié des solutions de rechange?
- Je sais que chaque cas d'utilisation est différente, mais sont là certains cas où je serais certainement pas veulent utiliser un certain paquet?
La solution
Je l'ai utilisé avec succès Solr depuis près de 2 ans maintenant, et ne l'ai jamais utilisé Sphinx, donc je suis évidemment biaisé. Cependant, je vais essayer de garder l'objectif en citant les documents ou d'autres personnes. Je vais aussi prendre des correctifs à ma réponse: -)
Similitudes:
- Les deux Solr et Sphinx répondent à tous vos besoins. Ils sont rapides et conçus pour indexer et de rechercher de grandes étendues de données efficace.
- Les deux ont une longue liste de sites à fort trafic en les utilisant ( Solr , Sphinx )
- Les deux offrent un soutien commercial. ( Solr , Sphinx )
- offrent deux liaisons API client pour plusieurs plates-formes / langues ( Sphinx , Solr )
- Les deux peuvent être distribués pour augmenter la vitesse et de la capacité ( Sphinx , Solr )
Voici quelques différences:
- Solr, étant un projet Apache, est évidemment Apache2 licence. Sphinx est GPLv2 . Cela signifie que si vous avez besoin d'intégrer ou de prolonger (et pas seulement « utiliser ») Sphinx dans une application commerciale, vous devrez acheter une licence commerciale ( logique)
- facilement intégrable dans les applications Java.
- Solr est construit sur Lucene, qui est une technologie éprouvée sur 8 ans avec un énorme d'utilisateurs ( c'est seulement une petite partie). Chaque fois que Lucene obtient une nouvelle fonctionnalité ou speedup, Solr obtient aussi. La plupart des devs engagent à Solr sont également Lucene committers.
- Sphinx intègre plus étroitement avec SGBDR, en particulier MySQL.
- Solr peut être intégré avec Hadoop pour construire applications distribuées
- Solr peut être intégré avec Nutch pour construire rapidement un moteur de recherche web à part entière avec crawler .
- Solr peut . Sphinx ne peut pas .
- Solr est livré avec un correcteur orthographique de la boîte .
- Solr est livré avec . Sphinx dans Facettage href="http://api-meal.eu/memo/128-faceted-search-with-sphinx-and-php/" prend plus de travail .
- Sphinx ne permet pas les mises à jour d'index partiel données sur le terrain.
- Dans Sphinx, all le document ids doit être unique non signé nombres entiers non nuls . Solr ne nécessite même pas une clé unique pour de nombreuses opérations et des clés uniques peuvent être des nombres entiers ou cordes.
- (actuellement un correctif supplémentaire uniquement) pour éviter de dupliquer des résultats similaires. Sphinx ne semble pas fournir tout élément comme celui-ci.
- Alors que Sphinx est conçu pour récupérer seul document ids , dans Solr vous pouvez directement obtenir des documents entiers avec à peu près tout type de données, ce qui rend plus indépendant de tout magasin de données externe et enregistre l'aller-retour supplémentaire.
- Solr, sauf en cas d'utilisation intégrée, fonctionne dans un tels que Tomcat ou Jetty , qui exigent configuration spécifique supplémentaire et le réglage (ou vous pouvez utiliser le inclus la jetée et il suffit de lancer avec
java -jar start.jar
). Sphinx n'a pas de configuration supplémentaire.
Questions connexes:
Autres conseils
Sauf si vous avez besoin d'étendre la fonctionnalité de recherche de quelque façon exclusive, le Sphinx est votre meilleur pari.
Avantages Sphinx:
- Développement et la configuration est plus rapide
- Beaucoup mieux (et plus rapide) l'agrégation. Ce fut la caractéristique de tueur pour nous.
- Non XML. C'est ce que finalement exclu Solr pour nous. Nous avons dû revenir plutôt de grands résultats (penser à des centaines de résultats), puis de les regrouper nous-mêmes depuis l'agrégation Solr faisait défaut. La quantité de temps à serialize et de XML juste des performances tout à fait tué. Pour les petits ensembles de résultats cependant, il était parfaitement bien.
- meilleure documentation que je l'ai vu dans une application open source
avantages Solr:
- Peut être étendu.
- Peut-il frapper directement à partir d'une application Web, à savoir, vous pouvez avoir des recherches comme autocomplete a frappé le serveur Solr directement via AJAX.
Note: Il y a beaucoup d'utilisateurs avec la même question à l'esprit
.Donc, pour répondre au point:
Qui et pourquoi?
-
Utilisez Solr si vous avez l'intention de l'utiliser dans votre web-app (Exemple de recherche par site moteur). Il va certainement se révéler grande, grâce à son API. Vous aurez certainement besoin de ce pouvoir pour une application web.
-
Utilisez Sphinx si vous voulez rechercher des tonnes de documents / fichiers réels rapides. Il indexe très vite aussi. Je recommande de ne pas l'utiliser dans une application qui implique JSON ou XML parsing pour obtenir les résultats de la recherche. Utilisez-le pour des recherches directes dB. Il fonctionne très bien sur MySQL.
Alternatives
Bien que ce sont les géants, il y a beaucoup plus. En outre, il y a ceux qui utilisent ces pour alimenter leurs cadres personnalisés. Donc, je dirais que vous avez vraiment rien manqué. Bien qu'il y ait un ElasticSearch qui a une bonne base d'utilisateurs.
J'utilise Sphinx depuis près d'un an, et il a été incroyable. Je peux l'indice de 1,5 millions de documents à environ une minute sur mon MacBook, et encore plus rapide sur le serveur. Je suis également en utilisant Sphinx pour limiter les recherches à des endroits dans les latitudes et longitudes spécifiques, et il est très rapide. En outre, comment les résultats sont classés est très tweakable. Facile à installer et la configuration, si vous lisez un tutoriel ou deux. Presque 1,0 état, mais leurs candidats de sortie ont été solide comme le roc.
Lucene / Solr semble être plus en vedette et avec plus d'années en affaires et une communauté d'utilisateurs beaucoup plus forte. IMHO si vous pouvez passer les problèmes de configuration initiale que certains semble avoir fait face (pas nous) alors je dirais que Lucene / Solr est votre meilleur pari.