Wählen Sie einen eigenständigen Volltextsuchserver: Sphinx oder SOLR? [geschlossen]

192

Ich suche einen eigenständigen Volltextsuchserver mit den folgenden Eigenschaften:

  • Muss als eigenständiger Server arbeiten, der Suchanforderungen von mehreren Clients bedienen kann
  • Muss in der Lage sein, eine "Massenindizierung" durchzuführen, indem das Ergebnis einer SQL-Abfrage indiziert wird: Sagen Sie "SELECT id, text_to_index FROM documents";
  • Muss freie Software sein und muss unter Linux mit MySQL als Datenbank ausgeführt werden
  • Muss schnell sein (schließt die interne Volltextsuche von MySQL aus)

Die Alternativen, die ich gefunden habe und die diese Eigenschaften haben, sind:

  • Solr (basierend auf Lucene)
  • ElasticSearch (ebenfalls basierend auf Lucene)
  • Sphinx

Meine Fragen:

  • Wie vergleichen sie?
  • Habe ich Alternativen verpasst?
  • Ich weiß, dass jeder Anwendungsfall anders ist, aber gibt es bestimmte Fälle, in denen ich definitiv kein bestimmtes Paket verwenden möchte?
knorv
quelle
1
Haben Sie es ausgeschlossen, Lucene zu verwenden? Solr ist ein Service auf Lucene, so dass gerade Lucene eine Möglichkeit sein könnte.
Dave
Hat Lucene einen eigenständigen Servermodus? Ich dachte, das wäre eines der Dinge, die SOLR hinzugefügt hat? Ich habe nichts ausgeschlossen - also
zögern Sie
mausch: Hauptsächlich Java, aber auch andere Sprachen.
Knorv
Persönlich mag ich Sphinx. Während eines "großen" Projekts vor kurzem hatte der neueste Release-Kandidat (0.9.9-rc2) jedoch Stopper-Fehler bei der Verwendung von Multi-Value-Arrays (MVA). Es würde zufällige Ergebnisse geben! Also sind wir zu SOLR gezogen, um das zu umgehen. Sobald SOLR betriebsbereit war, war die Leistung in Ordnung und ohne den Show Stopper Bug.
pchap10k
2
Haben Sie sich elasticsearch.com angesehen?
FYA

Antworten:

327

Ich benutze Solr seit fast 2 Jahren erfolgreich und habe Sphinx noch nie benutzt, daher bin ich offensichtlich voreingenommen. Ich werde jedoch versuchen, es objektiv zu halten, indem ich die Dokumente oder andere Personen zitiere. Ich werde auch Patches zu meiner Antwort nehmen :-)

Ähnlichkeiten:

  • Sowohl Solr als auch Sphinx erfüllen alle Ihre Anforderungen. Sie sind schnell und so konzipiert, dass große Datenmengen effizient indiziert und durchsucht werden können.
  • Beide haben eine lange Liste von Websites mit hohem Datenverkehr, die sie verwenden ( Solr , Sphinx ).
  • Beide bieten kommerzielle Unterstützung. ( Solr , Sphinx )
  • Beide bieten Client-API-Bindungen für mehrere Plattformen / Sprachen ( Sphinx , Solr ).
  • Beide können verteilt werden, um Geschwindigkeit und Kapazität zu erhöhen ( Sphinx , Solr )

Hier sind einige Unterschiede:

Verwandte Fragen:

Mauricio Scheffer
quelle
4
In Bezug auf Entwickler, die sich sowohl für Solr als auch für Lucene engagieren, scheinen sie die beiden Produkte zusammengeführt zu haben, um die weitere Entwicklung einfacher und schneller zu machen - lucidimagination.com/blog/2010/03/26/… .
Jimmyystormig
3
@Stann: wie so? Ich habe Solr vor fast 5 Jahren verwendet und musste nie eine einzige Zeile Java schreiben.
Mauricio Scheffer
@MauricioScheffer Glaubst du wirklich, dass Java-Code schneller als C ++ sein wird? Hier ist der Vergleich von Bill Karwin und Sphinx. Dort werden Dinge zehnmal schneller als Lucene abgefragt (und Solr muss noch langsamer sein als.) Slideshare.net/billkarwin/…
Stann
3
@Stann: Glaubst du wirklich, du brauchst mehr Leistung als whitehouse.gov, Netflix, The Guardian, digg, um nur einige Websites mit Solr zu nennen? wiki.apache.org/solr/PublicServers
Mauricio Scheffer
3
Hier ist eine Antwort auf Sphinx , die ein gutes Paar zu dieser Antwort auf Solr
New Alexandria
48

Sphinx ist die beste Wahl, es sei denn, Sie müssen die Suchfunktion auf proprietäre Weise erweitern.

Vorteile der Sphinx:

  1. Entwicklung und Einrichtung sind schneller
  2. Viel bessere (und schnellere) Aggregation. Dies war das Killer-Feature für uns.
  3. Nicht XML. Dies hat Solr letztendlich für uns ausgeschlossen. Wir mussten ziemlich große Ergebnismengen zurückgeben (denken Sie an Hunderte von Ergebnissen) und diese dann selbst aggregieren, da die Solr-Aggregation fehlte. Die Zeit, die für die Serialisierung von und nach XML benötigt wird, hat die Leistung absolut beeinträchtigt. Für kleine Ergebnissätze war es jedoch vollkommen in Ordnung.
  4. Beste Dokumentation, die ich in einer Open Source App gesehen habe

Solr Vorteile:

  1. Kann verlängert werden.
  2. Kann direkt von einer Web-App aus aufgerufen werden, dh Sie können Autocomplete-ähnliche Suchvorgänge direkt über AJAX auf den Solr-Server ausführen lassen.
larf311
quelle
29
Solr hat viele andere Antwortschreiber als XML, einschließlich JSON, PHP, Ruby, Python und ein Java-Binärformat: lucene.apache.org/solr/api/org/apache/solr/request/…
Mauricio Scheffer
24
Habe ich erwähnt, wie schrecklich die Solr / Lucene-Dokumentation ist? Javadocs durchsuchen zu müssen, um die Funktionalität herauszufinden, ist nicht meine Idee der Dokumentation.
Larf311
3
Ich hätte auf das Wiki verlinken sollen
Mauricio Scheffer
2
Ich verbringe den ganzen Tag damit, einen Installationsfehler von Sphinx 0.9.9 auf meinem Mac zu beheben. Bisher funktioniert es immer noch nicht. Es ist so fehlerhaft. Ich habe sehr viele Vorschläge gemacht. Ich gebe auf Wirklich frustrierend ...
lkahtz
Die Dokumentation von Solr ist nicht so gut wie die von Sphinx. aber die Gemeinschaft ist groß. Und ich kann immer alles herausfinden, indem ich den Quellcode von solr lese.
Tyler Long
21

Hinweis: Es gibt viele Benutzer, die dieselbe Frage haben.

Um auf den Punkt zu antworten:

Welches und warum?

  • Verwenden Sie Solr, wenn Sie es in Ihrer Web-App (Beispiel-Site-Suchmaschine) verwenden möchten. Dank seiner API wird es sich definitiv als großartig herausstellen. Diese Leistung benötigen Sie auf jeden Fall für eine Web-App.

  • Verwenden Sie Sphinx, wenn Sie Tonnen von Dokumenten / Dateien ganz schnell durchsuchen möchten. Es indiziert auch sehr schnell. Ich würde empfehlen, es nicht in einer App zu verwenden, die JSON oder das Parsen von XML umfasst, um die Suchergebnisse zu erhalten. Verwenden Sie es für direkte dB-Suchen. Es funktioniert hervorragend unter MySQL.

Alternativen

Obwohl dies die Riesen sind, gibt es noch viel mehr. Es gibt auch solche, die diese verwenden, um ihre benutzerdefinierten Frameworks zu betreiben. Also würde ich sagen, dass Sie wirklich keine verpasst haben. Obwohl es eine Elasticsearch gibt , die eine gute Benutzerbasis hat.

Augiwan
quelle
13
Dieser unangenehme Moment, als ich diese Antwort nach anderthalb Jahren las und auf Upvote klickte und sah, dass ich diese Antwort selbst geschrieben hatte. lol. : DA kleine Ergänzung dazu: Nach 18 Monaten hat sich elasticsearch als großartige Alternative herausgestellt und hat auch eine anständige Community. Cool, Bonsai cool!
Augiwan
Augustus! Dieser unangenehme Moment: D. Was ist Ihrer Meinung nach für eine Python-Web-App jetzt am besten? Solr oder elastische Suche basierend auf Leistung, Speichernutzung und einfacher Einrichtung?
Mevin Babu
Es spielt keine Rolle, in welcher Sprache die Web-App geschrieben ist. Wählen Sie basierend auf Ihrem Anwendungsfall!
Augiwan
19

Ich benutze Sphinx seit fast einem Jahr und es war erstaunlich. Ich kann 1,5 Millionen Dokumente in ungefähr einer Minute auf meinem MacBook und noch schneller auf dem Server indizieren. Ich benutze Sphinx auch, um die Suche auf Orte innerhalb bestimmter Breiten- und Längengrade zu beschränken, und es ist sehr schnell. Außerdem ist die Rangfolge der Ergebnisse sehr optimierbar. Einfach zu installieren und einzurichten, wenn Sie ein oder zwei Tutorials lesen. Fast 1.0 Status, aber ihre Release Candidates waren absolut solide.

lo_fye
quelle
3
Die geografische Suche kann in Solr mit dem LocalSolr-Plugin durchgeführt werden: gissearch.com/localsolr
Mauricio Scheffer
1
Sie können 1,5 Millionen Dokumente in einer Minute indizieren? Ich kann nicht einmal annähernd so viele LESEN - direkt aus 7zip-Dateien (nicht schreiben, auf die Konsole ausgeben) auf meiner SSD! Und es ist 2017! Was für Dokumente sind das? Das ist ziemlich unglaublich. Hinweis: Ich hoffe, Sie wollten nicht den Index von 1,5 Millionen in einer Minute durchsuchen . Die Suche nach einem Index mit 1,5 Millionen Dokumenten sollte immer noch in Sekunden (auch 2009) zurückkehren.
FastAl
2

Lucene / Solr scheint stärker vertreten zu sein und verfügt über längere Geschäftsjahre und eine viel stärkere Benutzergemeinschaft. Imho, wenn Sie die anfänglichen Setup-Probleme überwinden können, mit denen einige konfrontiert zu sein scheinen (nicht wir), dann würde ich sagen, dass Lucene / Solr Ihre beste Wahl ist.

Angsuman Chakraborty
quelle
Die Benutzergemeinschaft ist ein wichtiger Punkt. Es gibt ein paar SEHR, SEHR hilfreiche Leute in den Sphinx-Foren, aber sonst gibt es keine starke Community.
mlissner