ElasticSearch, Sphinx, Lucene, Solr, Xapian. Welche passt für welche Verwendung?
Ich bin derzeit auf der Suche nach anderen Methoden suchen, anstatt eine riesige SQL-Abfrage.
Ich sah elasticsearch vor kurzem und spielte mit schwups (eine Python-Implementierung einer Suchmaschine).
Können Sie die Gründe für Ihre Wahl(en)?
InformationsquelleAutor der Frage dzen | 2010-02-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Schöpfer von ElasticSearch, vielleicht kann ich Ihnen einige überlegungen auf, warum ich ging voran und schaffte es in den ersten Platz :).
Verwendung von reinem Lucene ist eine Herausforderung. Es gibt viele Dinge, die Sie brauchen zu kümmern, wenn Sie wollen, dass es wirklich gut, und auch seine Bibliothek, so dass keine verteilte Unterstützung, es ist nur eine eingebettete Java-Bibliothek, die Sie pflegen müssen.
In Bezug auf Lucene usability, Weg zurück, wenn (fast 6 Jahre), habe ich den Kompass. Sein Ziel war die Vereinfachung der Verwendung von Lucene und machen jeden Tag Lucene einfacher. Was ich stieß, immer und immer wieder ist die Voraussetzung, um der Lage sein, mit Kompass verteilt. Ich fing an zu arbeiten auf es von Kompass, durch die Integration mit Daten-grid-Lösungen wie GigaSpaces, Kohärenz und Terrakotta, aber dessen nicht genug.
In seinem Kern eine verteilte Lucene-Lösung muss sich sharded. Auch mit der Weiterentwicklung von HTTP und JSON als allgegenwärtige APIs, bedeutet es, dass eine Lösung, die vielen verschiedenen Systemen mit verschiedenen Sprachen verwendet werden können.
Dies ist der Grund, warum ich ging voran und schuf ElasticSearch. Es hat eine sehr fortschrittliche Modell verteilt, spricht JSON nativ, und stellt viele Funktionen der erweiterten Suche, die sich alle nahtlos ausgedrückt durch JSON-DSL.
Solr ist auch eine Lösung für das aussetzen einer Indizierung/Suche server über HTTP, aber ich würde behaupten, dass ElasticSearch bietet eine viel höhere verteilten Modell und Benutzerfreundlichkeit (derzeit aber fehlt bei einigen die Suchfunktion, aber nicht für lange, und in jedem Fall, der plan ist, alle Kompass Funktionen in ElasticSearch). Natürlich, ich bin voreingenommen, da ich erstellt, ElasticSearch, so müssen Sie eventuell selbst prüfen.
Als für Sphinx, ich habe es nicht, also kann ich nicht kommentieren. Was ich verweisen kann, Sie ist dieser thread im forum Sphinxdie ich denke, erweist sich die überlegene verteilten Modell von ElasticSearch.
Natürlich, ElasticSearch hat viele weitere features dann einfach verteilt werden. Es ist tatsächlich gebaut, mit cloud im Sinn. Sie können die feature-Liste auf der Website.
InformationsquelleAutor der Antwort kimchy
Wir verwenden Lucene regelmäßig zu index und
Suche zig Millionen von Dokumenten.
Suchanfragen sind schnell genug, und wir verwenden
inkrementelle updates, die nicht nehmen
eine lange Zeit. Es hat uns einige Zeit
um hier zu bekommen. Die starken Punkte des
Lucene sind Skalierbarkeit, eine große
Palette von Funktionen und eine aktive
Entwickler-community. Mit bloßen
Lucene benötigt die Programmierung in Java.
Wenn Sie beginnen von neuem zu laufen, das Werkzeug, mit dem Sie in der Lucene-Familie ist Solrdie wesentlich leichter einzurichten ist, als bare Lucene, und hat fast alle von Lucene ist eine macht. Es kann zu importieren Datenbank-Dokumente problemlos. Solr sind in Java geschrieben, so dass jede Modifikation des Solr erfordert Java-Kenntnisse, aber Sie können viel tun, nur durch anpassen der Konfigurationsdateien.
Habe ich auch gehört, gute Dinge über Sphinx, vor allem in Verbindung mit einer MySQL-Datenbank. Habe es nicht, obwohl.
IMO, sollten Sie nach:
InformationsquelleAutor der Antwort Yuval F
Habe ich verwendet, Sphinx, Solr und Elasticsearch. Solr/Elasticsearch basieren auf der Lucene. Es fügt viele Allgemeine Funktionen: web-server-api, Facettierung, caching, etc.
Wenn Sie wollen einfach nur eine einfache Volltextsuche setup, Sphinx ist eine bessere Wahl.
Wenn Sie möchten, passen Sie Ihre Suche an alle, Elasticsearch und Solr sind die bessere Wahl. Sie sind sehr erweiterbar: Sie können schreiben Sie Ihre eigenen plugins anpassen Ergebnis erzielte.
Einige Beispiel-Verwendungen:
InformationsquelleAutor der Antwort tommy chheng
Verwenden wir die Sphinx, die in einer Vertikalen Suche Projekt mit 10.000.000 + MySql-Datensätze und 10+ verschiedene Datenbank .
Es hat sehr gute Unterstützung für MySQL und hohe Leistung auf die Indizierung , recherche ist schnell, aber vielleicht ein wenig weniger als Lucene.
Aber es ist die richtige Wahl, wenn Sie benötigen, schnell Indizierung jeden Tag und verwenden eine MySQL-db.
InformationsquelleAutor der Antwort Emiliano M.
Experiment vergleichen ElasticSearch und Solr
InformationsquelleAutor der Antwort Karussell
Meine sphinx.conf
Test-Skript:
Beispiel-Ergebnis:
Sphinx-Abfrage Zeit:
Sphinx Abfrage Zeit (1k gleichzeitige):
MySQL-query time:
MySQL Abfrage Zeit (1k gleichzeitige):
InformationsquelleAutor der Antwort Abdullah Aydın
Nur elasticsearch vs. solr Vergleich habe ich in der Lage zu finden, so weit ist es hier:
Solr vs. elasticsearch Deathmatch!
InformationsquelleAutor der Antwort Gene
Lucene ist schön und alle, aber Ihre stop-Wort-Satz ist schrecklich. Musste ich manuell hinzufügen eine Tonne von stop-Wörter zu StopAnalyzer.ENGLISH_STOP_WORDS_SET nur, um es irgendwo in der Nähe nutzbar.
Habe ich nicht verwendet, Sphinx, aber ich kenne Menschen, die schwören auf Ihre Geschwindigkeit und in der Nähe-Magische "Leichtigkeit der Installation zu awesomeness" - Verhältnis.
InformationsquelleAutor der Antwort larley
Versuchen indextank.
Als der Fall der elastischen suchen, es wurde so konzipiert, dass es viel einfacher zu verwenden als lucene/solr. Es enthält auch sehr flexibles scoring-system können optimiert werden, ohne Neuindizierung.
InformationsquelleAutor der Antwort Spike