Die Wahl eines eigenständigen Volltextsuche Server: Sphinx oder SOLR? [geschlossen]
-
18-09-2019 - |
Frage
Ich suche nach einem eigenständigen Volltextsuche-Server mit den folgenden Eigenschaften:
- muss als Stand-alone-Server betreiben, die Suchanfragen von mehreren Clients dienen
- Muss in der Lage „bulk Indizierung“ zu tun, indem die Indizierung das Ergebnis einer SQL-Abfrage: sagen „SELECT id, text_to_index aus Dokumenten;“
- Müssen freie Software sein und auf Linux mit MySQL als Datenbank ausgeführt werden müssen
- Muss schnell sein (Regeln aus MySQL internen Volltextsuche)
Die Alternativen, die ich gefunden habe, die diese Eigenschaften haben, sind:
- Solr (basierend auf Lucene)
- Elasticsearch (auch auf Basis von Lucene)
- Sphinx
Meine Fragen:
- Wie vergleichen sie?
- Habe ich verpasst keine Alternativen?
- Ich weiß, dass jeder Anwendungsfall ist anders, aber es gibt bestimmte Fälle, in denen ich würde auf jeden Fall nicht will ein bestimmtes Paket benutzen?
Lösung
Ich habe mit Solr erfolgreich seit fast 2 Jahren, und noch nie Sphinx verwendet, so dass ich bin natürlich voreingenommen. Ich werde jedoch versuchen, es Ziel zu halten, indem Sie die Dokumentation oder andere Personen zu zitieren. Ich werde auch Patches auf meine Antwort nehmen: -)
Similarities:
- Sowohl Solr und Sphinx alle Ihre Anforderungen erfüllen. Sie sind schnell und entwickelt, um indizieren und durchsuchen große Körper von Daten effizient.
- Sowohl eine lange Liste von High-Traffic-Sites haben mit ihnen ( Solr , Sphinx )
- bietet Sowohl kommerzielle Unterstützung. ( Solr , Sphinx )
- Beide bieten Client-API-Anbindungen für mehrere Plattformen / Sprachen ( Sphinx , Solr )
- kann sowohl die Geschwindigkeit zu erhöhen verteilt und Kapazität ( Sphinx , Solr )
Hier sind einige Unterschiede:
- Solr, ein Apache-Projekt ist, ist offensichtlich Apache2-lizenziert. Sphinx ist GPLv2 . Das bedeutet, dass, wenn Sie jemals in einer kommerziellen Anwendung benötigen einzubetten oder Sphinx zu erweitern (nicht nur „Verwendung“), erhalten Sie eine kommerzielle Lizenz ( Begründung )
- Solr ist leicht integrierbare in Java-Anwendungen.
- wird Solr oben auf Lucene gebaut, die eine bewährte Technologie über 8 Jahre alt mit einer große Benutzerbasis ( dies ist nur ein kleiner Teil). Jedes Mal, wenn Lucene eine neue Funktion oder Speedup wird, bekommt Solr es auch. Viele der Devs zu Solr zu begehen sind auch Lucene Committer.
- Sphinx integriert enger mit RDBMS, insbesondere MySQL.
- kann Solr sein integriert Hadoop zu bauen verteilte Anwendungen
- Solr kann sein mit Nutch integriert, um schnell eine vollwertigen Web-Suchmaschine mit Raupen zu bauen .
- Solr können href="http://wiki.apache.org/solr/ExtractingRequestHandler" rel="noreferrer"> Index proprietären Formaten wie Microsoft Word, PDF, etc
nicht . - kommt Solr mit einem -Rechtschreibprüfung aus dem Kasten heraus .
- Solr kommt mit Facette Unterstützung aus dem Kasten heraus . Facettierung in Sphinx braucht mehr Arbeit .
- Sphinx nicht Teil-Index-Updates für Felddaten ermöglichen.
- In Sphinx, all Dokument-IDs müssen eindeutig unsigned Nicht-Null-Integer-Zahlen sein. Solr hat auch keinen eindeutigen Schlüssel benötigen für viele Operationen und eindeutige Schlüssel können entweder ganze Zahlen oder Strings.
- Solr unterstützt Feld kollabiert (derzeit als zusätzliches Patch nur) um ähnliche Ergebnisse zu vermeiden, zu duplizieren. Sphinx scheint keine Funktion wie diese zur Verfügung zu stellen.
- Während Sphinx wurde entwickelt, um nur Dokument abrufen ids , in Solr Sie können direkt ganze Dokumente mit so ziemlich jeder Art von Daten erhalten, so dass es unabhängig von einem externen Datenspeicher und spart die zusätzliche hin und zurück.
- Solr, es sei denn, eingebettet verwendet wird, läuft in einem Java-Web-Container wie Tomcat oder Jetty , die erfordern zusätzliche spezifische Konfiguration und Optimierung (oder Sie können den enthalten Jetty und starten sie es nur mit
java -jar start.jar
). Sphinx hat keine zusätzliche Konfiguration.
Verwandte Fragen:
Andere Tipps
Wenn Sie die Suchfunktion in proprietärer Weise erweitern müssen, Sphinx ist die beste Wahl.
Sphinx Vorteile:
- Entwicklung und Einrichtung ist schneller
- Viel besser (und schneller) Aggregation. Dies war das Killer-Feature für uns.
- Nicht XML. Dies ist, was regiert schließlich aus Solr für uns. Wir hatten ziemlich große Ergebnismengen zurück (man denke Hunderte von Ergebnissen) und dann aggregieren sie uns seit Solr Aggregation fehlte. Die Höhe der Zeit zu und von XML serialisiert werden nur absolut getötet Leistung. Für kleine Ergebnisse setzt aber es war völlig in Ordnung.
- Best Dokumentation Ich habe in einer Open-Source-app gesehen
Solr Vorteile:
- Kann verlängert werden.
- Kann trifft es direkt von einem Web-App, das heißt, können Sie die automatische Vervollständigung artige haben sucht den Solr-Server direkt über AJAX getroffen.
Hinweis: Es gibt viele Anwender mit der gleichen Frage im Kopf
.Also, auf den Punkt zu beantworten:
Welche und warum?
-
Mit Solr , wenn Sie beabsichtigen, es zu benutzen in Ihrem Web-App (Beispiel-Website Suchmaschine). Es wird auf jeden Fall groß ausfallen, dank seiner API. Sie müssen auf jeden Fall, dass die Leistung für einen Web-App.
-
Mit Sphinx , wenn Sie durch Tonnen von Dokumenten / Dateien ganz schnell durchsuchen möchten. Es Indizes wirklich schnell zu. Ich würde empfehlen, nicht in einer App zu verwenden, die JSON oder XML-Parsing beinhaltet, um die Suchergebnisse zu bekommen. Verwenden Sie es für direkte dB sucht. Es funktioniert auf MySQL.
Alternativen
Obwohl diese die Riesen sind, gibt es viel mehr. Auch gibt es diejenigen, die diese verwenden, um ihre benutzerdefinierten Rahmen treiben. Also würde ich sagen, dass Sie wirklich nicht verpasst haben. Zwar gibt es eine Elasticsearch , die eine gute Nutzerbasis hat.
Ich habe nun seit fast einem Jahr Sphinx gewesen verwendet wird, und es war erstaunlich. Ich kann Index 1,5 Millionen Dokumente in etwa einer Minute auf meinem MacBook, und noch schneller auf dem Server. Ich verwende Sphinx auch Suche nach Orten in bestimmten Breiten und Längen zu begrenzen, und es ist sehr schnell. Auch, wie Ergebnisse sortiert werden, ist sehr modifizierbar. Einfach & Setup zu installieren, wenn Sie ein Tutorial oder zwei lesen. Fast 1,0-Status, aber ihre Release Candidates wurden rock solid.
Lucene / Solr erscheint mehr vorgestellten und mit längeren Jahren im Geschäft und eine viel stärkeren User-Community zu sein. imho wenn Sie vorbei an den ersten Setup-Probleme zu bekommen scheint, als einige konfrontiert zu haben (wir nicht), dann würde ich sagen, Lucene / Solr die beste Wahl ist.