Lucene-Komponenten und Übersicht
Note
Diese Funktion ist in verfügbar NCache Unternehmen und Professionell Editionen.
Wie wir wissen, ist Lucene eine leistungsstarke und effiziente Suchmaschine, die je nach Benutzeranforderungen eine breite Palette an Textsuchtechniken bietet. Lucene ist viel mehr als jede andere Textsuchmaschine, da die Auswahlmöglichkeiten, die dem Benutzer geboten werden, in keiner Weise diskriminiert werden. Es verfügt über leistungsstarke und starke Suchalgorithmen und unterstützt eine breite Palette von Suchabfragen.
Lucene-Anwendungen haben einen Grundzyklus, der in erster Linie aus der ersten Indizierung von Daten besteht, nach denen gesucht wird, und zwar in einem bestimmten Pfad. Die hinzugefügten Daten können je nach Bedarf des Benutzers in beliebiger Textform vorliegen. Die Daten werden indiziert und tokenisiert. Anschließend wird mithilfe von Abfragen nach diesen Token gesucht. Dies ist ein wechselseitiger Prozess, da er zunächst die Verarbeitung von Daten und dann deren Suche umfasst.
Das folgende Diagramm zeigt den grundlegenden Arbeitsablauf des Lucene-Modells.
Komponenten von Lucene
Um Lucene für die Textsuche zu verwenden, werfen wir einen genaueren Blick auf die von Lucene verwendete Haupt-API. Bitte beachten Sie, dass es sich nicht um eine vollständige Anleitung für Lucene handelt. Es wird Ihnen jedoch dabei helfen, ein Verständnis für die grundlegende und radikale Lucene-API zu erlangen.
Im Folgenden finden Sie die grundlegende API, die zum Erstellen einer Lucene-basierten Lösung verwendet wird.
Verzeichnis: Es ist die Basisklasse, die definiert, wo die Indizes gebildet werden.
Dokument: Es enthält die Daten, die indiziert werden sollen.
Analysator: Während die Daten indiziert werden, legt der Analysator die Kriterien fest, auf deren Grundlage die Tokenisierung und Suche in den Daten durchgeführt wird. Ebenso wird es beim Abfragen von Daten verwendet, was auch eine Tokenisierung beinhaltet.
IndexWriter: Mit dieser Klasse werden zuvor erstellte Dokumente an das Verzeichnis übergeben. Es kann jeweils nur ein indexWriter geöffnet sein.
IndexReader: In jedem Verzeichnis, in dem Indizes erstellt werden, können Leser geöffnet sein, die für das Lesen von Daten aus den Indizes verantwortlich sind.
IndexSearcher: Der Suchende ist dafür verantwortlich, die Daten über das/die Lesegerät(e) abzufragen.
Nachfolgend finden Sie eine detaillierte Beschreibung dieser Klassen:
Verzeichnis
Diese Klasse ist eine Darstellung des Speicherorts, an dem Lucene-Indizes gespeichert werden. Für die Pflege der Indizes muss ein Verzeichnis geöffnet werden, damit weitere Operationen daran durchgeführt werden können.
Dokument
Ein Dokument ist eine Sammlung von Felder. Diese Felder enthalten Textdaten als Wert für einen Feldnamen. Der Wert sind die Daten, die Sie indizieren und dann für die Zukunft durchsuchbar machen möchten. Bei jedem Feld kann der Benutzer festlegen, ob er diesen Feldwert analysieren möchte oder nicht. Dokument ist im Grunde die Sucheinheit, die zurückgegeben wird, wenn ein Feld anhand eines durchsucht wird searchterm
.
Analyzer
Analyzer
Wie bereits erwähnt, liegt die Hauptverantwortung darin, die Daten entsprechend dem bereitgestellten Typ in kleinere Blöcke zu zerlegen. Grundsätzlich werden die Felder der Dokumente in indizierbare Token analysiert. Die Art und Weise, wie die Daten vom Analysegerät analysiert werden, beeinflusst die Fähigkeit des Benutzers, die Daten zu durchsuchen. Nachfolgend sind die vier grundlegenden und am häufigsten verwendeten Lucene-Analysatoren aufgeführt.
Whitespace-Analysator
Dieser Analysator analysiert die Daten nach Leerzeichen, wie der Name schon sagt. Darüber hinaus behält dieser Analysator die Groß-/Kleinschreibung der Wörter bei. Es führt die Tokenisierung der Daten entsprechend dem Fall durch, den sie hauptsächlich enthalten.
Standardanalysator
Es analysiert die Daten anhand von Stoppwörtern und führt eine Tokenisierung der Daten in Kleinbuchstaben durch, ähnlich wie beim einfachen Analysator. Darüber hinaus erkennt es die URLs und E-Mail-Adressen und generiert entsprechende Token. Aufgrund dieser Funktionalität wird es am häufigsten verwendet, da es als das intelligenteste Analysegerät gilt.
Einfacher Analysator
Es indiziert die Daten in Kleinbuchstaben und teilt sie nach Nichtbuchstaben auf. URLs und Nicht-Buchstaben-Zeichen wie Symbole oder Zahlen werden nicht indiziert.
Stoppen Sie den Analysator
Der Stoppanalysator generiert aus den Daten Token entsprechend den Nicht-Buchstaben-Zeichen sowie Stoppwörtern. Stoppwörter sind die Wörter, die bei der Indizierung ignoriert werden sollten, da die Analysatoren sie für das Durchsuchen als irrelevant erachten. Darüber hinaus indiziert der Stop-Analysator keine URLs und Nicht-Buchstaben-Zeichen wie Symbole oder Zahlen.
Betrachten Sie den folgenden Satz:
Dies ist ein Tutorial für „DistributedLucene“ unter alachisoft. Com.
Whitespace-Analysator | Stoppen Sie den Analysator | Einfacher Analysator | Standardanalysator |
---|---|---|---|
Dieser is a Lernprogramm für „DistributedLucene“ at alachisoft. Com. |
Lernprogramm verteiltlucene alachisoft com |
fehlen uns die Worte. is a Lernprogramm für „distributedlucene“ alachisoft com |
Lernprogramm verteiltlucene alachisoft.com €XNUMX |
Indexautor
Um das Dokument hinzuzufügen und zu indizieren, benötigen wir eine IndexWriter
. Autor braucht:
Ein gültiges Lucene-Verzeichnis: wo das Dokument indiziert werden soll
Analysator: damit der Autor die Daten entsprechend analysiert.
Der Writer korrespondiert mit dem Analysator für die indizierten Daten und fügt die Ergebnisse dann dem Verzeichnis zur Speicherung der Daten hinzu. Genau genommen ist der Autor dafür verantwortlich, dass alle Schreibvorgänge korrekt an den Daten ausgeführt und anschließend gespeichert werden. Es gibt eine Reihe von Vorgängen, die auf dem Writer ausgeführt werden können, und der Writer wird nach allen Vorgängen entsorgt.
Indexleser
Die Hauptfunktionalität von Lucene besteht darin, die zuvor hinzugefügten Daten zu durchsuchen. Zu diesem Zweck haben wir IndexReader
welches die Daten aus dem Verzeichnis liest. Bei jeder Aktualisierung der Dokumente wird die IndexReader
muss neu initialisiert werden. Sie können entweder eine erstellen IndexReader
oder holen Sie sich eine Instanz davon IndexReader
von dem IndexWriter
. Sie übergeben die Verzeichnisinstanz an den Reader, der alle Dokumente indiziert hat.
Indexsucher
IndexSearcher
wird mit der Instanz von initialisiert
IndexReader
die die Anfrage des Benutzers entgegennimmt und die Daten entsprechend durchsucht. Eine Abfrage ist eine von Lucene bereitgestellte abstrakte Klasse und wird verwendet, um den Umfang und die Art der durchzuführenden Suche zu definieren. Beim Suchen werden wir mit zurückgegeben TopDocs
Dies ist das Ergebnis der Suche mit der Abfrage.
Nachdem die Abfrage erstellt wurde, analysieren Sie die Abfrage mithilfe von QueryParser
. Der Analysator wird an den queryParser übergeben, der die Abfrage entsprechend diesem Analysator analysiert. Darüber hinaus wird der im Dokument hinzugefügte Feldname an den Abfragesucher übergeben, damit dieser die Daten entsprechend durchsucht.
Ein Array wird in gepflegt topDocs
was bekannt ist als scoreDocs
. ScoreDocs
verwaltet die Suchergebnisse auf Basis der Abfrageausführung. Beim Durchlaufen dieses Arrays können die resultierenden Daten abgerufen werden.
Software Empfehlungen: Es wird empfohlen, für die Suche den gleichen Analysator zu verwenden, mit dem die Daten ursprünglich indiziert wurden.
Siehe auch
Lucene mit NCache
Konfigurieren Sie Lucene-Abfrageindizes
SQL-Suche im Cache
Durchsuchen Sie den Cache mit LINQ