Ich verwende Solr jetzt seit fast 2 Jahren erfolgreich und habe Sphinx noch nie verwendet, daher bin ich offensichtlich voreingenommen. Ich werde jedoch versuchen, es objektiv zu halten, indem ich die Dokumentation 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 darauf ausgelegt, große Datenmengen effizient zu indizieren und zu durchsuchen.
- Beide haben eine lange Liste von stark frequentierten Websites, die sie verwenden (Solr , Sphinx )
- Beide bieten kommerziellen Support. (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:
- Solr ist als Apache-Projekt offensichtlich Apache2-lizenziert. Sphinx ist GPLv2 . Das bedeutet, dass Sie, wenn Sie jemals Sphinx in eine kommerzielle Anwendung einbetten oder erweitern (nicht nur „verwenden“) müssen, eine kommerzielle Lizenz erwerben müssen (Begründung )
- Solr ist leicht integrierbar in Java-Anwendungen.
- Solr baut auf Lucene auf, einer bewährten Technologie über 8 Jahre alt mit einem riesigen Benutzerbasis (Dies ist nur ein kleiner Teil). Wann immer Lucene ein neues Feature oder eine Beschleunigung bekommt, bekommt Solr es auch. Viele der Entwickler, die sich für Solr engagieren, sind auch Lucene-Committer.
- Sphinx lässt sich enger in RDBMS integrieren, insbesondere in MySQL.
- Solr kann in Hadoop integriert werden um verteilte Anwendungen zu erstellen
- Solr kann in Nutch integriert werden, um schnell eine vollständig ausgereifte Websuchmaschine mit Crawler .
- Solr kann proprietäre Formate wie Microsoft Word, PDF usw. indizieren . Sphinx kann nicht .
- Solr wird mit einer Rechtschreibprüfung von Haus aus geliefert .
- Solr wird mit Facet-Support out of the box geliefert . Facetten in Sphinx erfordert mehr Arbeit .
- Sphinx erlaubt keine partiellen Indexaktualisierungen für Felddaten .
- In Sphinx müssen alle Dokument-IDs eindeutige vorzeichenlose Ganzzahlen ungleich Null sein Nummern . Solr erfordert für viele Operationen nicht einmal einen eindeutigen Schlüssel , und eindeutige Schlüssel können entweder Ganzzahlen oder Zeichenfolgen sein.
- Solr unterstützt das Ausblenden von Feldern (derzeit nur als zusätzlicher Patch), um zu vermeiden, dass ähnliche Ergebnisse dupliziert werden. Sphinx scheint keine solche Funktion zu bieten.
- Während Sphinx darauf ausgelegt ist, nur Dokument-IDs abzurufen , in Solr können Sie direkt ganze Dokumente mit so ziemlich jeder Art von Daten erhalten, was es unabhängiger von externen Datenspeichern macht und den zusätzlichen Hin- und Rückweg erspart.
- Solr wird, außer wenn es eingebettet verwendet wird, in einem Java-Webcontainer
ausgeführt wie Tomcat oder Jetty, die zusätzliche spezifische Konfiguration und Abstimmung
erfordern (oder Sie können den enthaltenen Jetty
verwenden und starten Sie es einfach mit
java -jar start.jar
). Sphinx hat keine zusätzliche Konfiguration.
Verwandte Fragen: