Unterschied zwischen Solr und Lucene

163

Ich weiß, dass Lucene und Solr zwei verschiedene Apache-Projekte sind, die zusammenarbeiten sollen, aber ich verstehe nicht, was das Ziel jedes Projekts ist.

Bisher habe ich verstanden, dass Lucene zum Erstellen eines Suchindex verwendet wird und Solr diesen Index zum Durchführen von Suchvorgängen verwendet. Habe ich recht oder ist das ein ganz anderer Ansatz?

darkheir
quelle
5
Nicht lucene.apache.org/solr (und die entsprechende Seite für Lucene) Antwort , dass?
NPE
Ja, Sie haben Recht, die Seite mit den Solr-Funktionen verdeutlicht den Unterschied. Si Wenn ich verstehe, könnte ich Lucene alleine benutzen, aber Solr braucht Lucene, um zu arbeiten.
Darkheir
2
Im Gegensatz zu Lucene ist Solr eine Webanwendung (WAR), die in jedem Servlet-Container bereitgestellt werden kann, z. B. Jetty, Tomcat, Resin usw. Solr kann von Nicht-Programmierern installiert und verwendet werden. Lucene kann nicht. Mehr auf lucenetutorial.com/lucene-vs-solr.html
Lucky

Antworten:

229

@darkheir: Lucene und Solr sind zwei verschiedene Apache-Projekte, die zusammenarbeiten sollen. Ich verstehe nicht, was das Ziel jedes Projekts ist.

1) Solr benutzt Lucene unter der Haube. Lucene hat keine Ahnung von der Solr-API.

2) Lucene ist ein leistungsstarkes Suchmaschinen-Framework, mit dem wir unserer Anwendung Suchfunktionen hinzufügen können. Es stellt eine benutzerfreundliche API zur Verfügung, während alle suchbezogenen komplexen Vorgänge ausgeblendet werden. Jede Anwendung kann diese Bibliothek verwenden, nicht nur Solr.

3) Solr ist um Lucene herum gebaut. Es ist nicht nur ein http-Wrapper um Lucene, sondern es ist bekannt, dass es Lucene mehr Arsenal hinzufügt . Solr ist sofort einsatzbereit. Es ist eine Webanwendung, die neben dem, was Lucene bietet, eine verwandte Infrastruktur und viele weitere Funktionen bietet.

@darkheir: Lucene wird verwendet, um einen Suchindex zu erstellen, und Solr verwendet diesen Index, um Suchen durchzuführen. Habe ich recht oder ist das ein ganz anderer Ansatz?

4) Lucene erstellt nicht nur den Index für den Verbrauch von Solr . Lucene kümmert sich um alle Suchvorgänge. Jede Anwendung kann das Lucene-Framework verwenden.

Beispiele sind Solr, Elastic Search, LinkedIn (ja, unter der Haube) usw.

Schauen Sie sich diesen Artikel an: Lucene vs Solr

UPDATE (18.06.14)

Wann sollte Lucene verwendet werden?

  • Sie sind ein Suchingenieur UND
  • Sie sind ein Programmierer UND
  • Sie möchten die volle Kontrolle über fast alle Interna von Lucene AND
  • Ihre Anforderungen erfordern, dass Sie alle möglichen geekigen Anpassungen an Lucene AND vornehmen
  • Sie sind bereit, sich um Infrastrukturelemente Ihrer Suche wie Skalierung, Verteilung usw. zu kümmern.

Wann Solr verwenden?

  • Mindestens eine der oben genannten Aussagen ergab keinen Sinn. ODER
  • Sie möchten etwas, das sofort einsatzbereit ist (auch ohne Java-Kenntnisse) ODER
  • Ihre Infrastrukturanforderungen überwiegen die Anforderungen an die Anpassung der Suche.

HINWEIS : Ich meine nicht, dass Solr schwer anzupassen ist. Solr ist sehr flexibel und bietet viele steckbare API-Punkte, mit denen Sie Ihren Code einwerfen können.

Es gibt Leute, die unter das Lager " müssen Lucene benutzen " fallen, aber immer noch Solr gegenüber Lucene bevorzugen, da es einfach zu benutzen ist. Sie beschränken sich jedoch nie darauf, Solr maximal anzupassen.

Übrigens sehe ich, dass Solr (4.x) mehr Ressourcen enthält als Lucene (4.x).

Phanin
quelle
31

Lucene ist eine Java-Bibliothek auf niedriger Ebene (mit Ports zu .NET usw.), die die Indizierung, Analyse, Suche usw. implementiert.

Solr ist ein eigenständiges vorkonfiguriertes Produkt / Webapp, das Lucene verwendet. Wenn Sie lieber mit der HTTP-API als mit der Java-API arbeiten, ist Solr genau das Richtige für Sie. Solr hat auch einige zusätzliche Funktionen (z . B. Gruppierung ).

mindas
quelle
21

Eine einfache Möglichkeit, die Beziehung zwischen Solr und Lucene zu konzipieren, ist die eines Autos und seines Motors. Sie können keinen Motor fahren, aber Sie können ein Auto fahren. Ebenso ist Lucene eine programmatische Bibliothek, die Sie nicht wie sie ist verwenden können, während Solr eine vollständige Anwendung ist, die Sie sofort verwenden können.

Quelle: Lucene-vs-solr - Lucene Tutorial

Vikas Kumar
quelle
5
Was von lucenetutorial.com/lucene-vs-solr.html kopiert und eingefügt wird Bitte geben Sie die Quelle an, wenn Sie die Antwort unter Angabe der Quelle kopieren und einfügen. ;)
Glücklicher
1
Die Seite scheint jetzt offline zu sein.
dev_feed
15

Solr basiert auf Lucene und bietet eine Suchplattform.

Suchplattform in den folgenden Ebenen von unten nach oben:

  • Daten
    • Zweck: Stellen Sie verschiedene Datentypen und Quellen dar
  • Dokumenterstellung
    • Zweck: Erstellen Sie Dokumentinformationen für die Indizierung
  • Indizieren und Suchen
    • Zweck: Erstellen und Abfragen eines Dokumentindex
  • Logikverbesserung
    • Zweck: Zusätzliche Logik zur Verarbeitung von Suchanfragen und Ergebnissen
  • Plattformservice suchen
    • Zweck: Fügen Sie zusätzliche Funktionen des Suchmaschinenkerns hinzu, um eine Serviceplattform bereitzustellen.
  • UI-Anwendung
    • Zweck: Suchoberfläche oder Anwendungen für Endbenutzer

Solr Stack

Referenzartikel: Unternehmenssuche

mingxue
quelle
12

SOLR ist ein Wrapper über den Lucene-Index.

Es ist einfach zu verstehen: SOLR ist Auto und Lucene ist sein Motor . Sie müssen nur wissen, wie man ein Auto fährt (SOLR), und Sie müssen auch einige Dinge über den Motor (Lucene) wissen, falls es Probleme mit Ihrem Automotor gibt.

Gute Fahrt :)

Behzad Qureshi
quelle
3
Ganz zu schweigen davon, dass Sie, wenn Sie so geneigt wären , Ihr eigenes Auto mit dem Lucene-Motor bauen könnten .
Hinweise
1

Sie können es sich folgendermaßen vorstellen: Apache Lucene ist die Bibliothek, die intern von Apache Solr verwendet wird. Es ist in Java geschrieben und bietet erstaunliche Funktionen für die Volltextsuche und -indizierung. Es kann eine große Anzahl von Sprachen aus der ganzen Welt analysieren und den Text in solchen Sprachen für eine effiziente und schnelle Suche und Analyse vorbereiten. Lucene ist eine Bibliothek - Sie können sie direkt in Ihrer Anwendung verwenden und alles selbst implementieren, aber der Apache Solr bietet eine Menge sofort einsatzbereit.

Die Apache Solr-Suchmaschine bietet beispielsweise HTTP-APIs, mit denen Sie Daten an diese senden und später nach diesen Daten suchen können. Sie können die Suchmaschinen mithilfe der API steuern, verteilte Umgebungen erstellen und die Daten automatisch auf mehrere Knoten und viele weitere verteilen.

Rafal
quelle