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?
Antworten:
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:
Hier sind einige Unterschiede:
java -jar start.jar
). Sphinx hat keine zusätzliche Konfiguration.Verwandte Fragen:
quelle
Sphinx ist die beste Wahl, es sei denn, Sie müssen die Suchfunktion auf proprietäre Weise erweitern.
Vorteile der Sphinx:
Solr Vorteile:
quelle
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.
quelle
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.
quelle
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.
quelle