Ihre Frage scheint mehr über das Zusammenführen von Indizes als über das Indizieren selbst zu sein.
Der Indizierungsprozess ist recht einfach, wenn Sie Details auf niedriger Ebene ignorieren. Lucene bildet aus Dokumenten einen sogenannten "invertierten Index". Wenn also ein Dokument mit dem Text "Sein oder Nichtsein" und id = 1 eingeht, sieht der invertierte Index folgendermaßen aus:
[to] → 1
[be] → 1
[or] → 1
[not] → 1
Dies ist im Grunde genommen der Index vom Wort zur Liste der Dokumente, die ein bestimmtes Wort enthalten. Jede Zeile dieses Index (Wortes) wird als Buchungsliste bezeichnet. Dieser Index bleibt dann bei Langzeitspeicherung erhalten.
In Wirklichkeit sind die Dinge natürlich komplizierter:
- Lucene kann einige Wörter überspringen, die auf dem jeweiligen Analysator basieren.
- Wörter können unter Verwendung eines Stemming-Algorithmus vorverarbeitet werden, um die Flexia der Sprache zu verringern;
- Die Buchungsliste kann nicht nur Kennungen der Dokumente enthalten, sondern auch den Versatz des angegebenen Wortes im Dokument (möglicherweise mehrere Instanzen) und einige andere zusätzliche Informationen.
Es gibt viele weitere Komplikationen, die für das Grundverständnis nicht so wichtig sind.
Es ist jedoch wichtig zu verstehen, dass der Lucene-Index nur angehängt wird . Zu einem bestimmten Zeitpunkt beschließt die Anwendung, alle Änderungen im Index festzuschreiben (zu veröffentlichen). Lucene beendet alle Servicevorgänge mit dem Index und schließt ihn, damit er für die Suche verfügbar ist. After-Commit-Index grundsätzlich unveränderlich. Dieser Index (oder Indexteil) wird als Segment bezeichnet . Wenn Lucene die Suche nach einer Abfrage ausführt, wird in allen verfügbaren Segmenten gesucht.
Es stellt sich also die Frage, wie wir bereits indizierte Dokumente ändern können .
Neue Dokumente oder neue Versionen bereits indizierter Dokumente werden in neuen Segmenten indiziert und alte Versionen in früheren Segmenten mithilfe der sogenannten Kill-Liste ungültig gemacht . Die Kill-Liste ist der einzige Teil des festgeschriebenen Index, der sich ändern kann. Wie Sie vielleicht erraten haben, nimmt die Indexeffizienz mit der Zeit ab, da alte Indizes möglicherweise größtenteils entfernte Dokumente enthalten.
Hier kommt das Zusammenführen ins Spiel. Zusammenführen - ist der Prozess des Kombinierens mehrerer Indizes, um insgesamt einen effizienteren Index zu erhalten. Grundsätzlich werden beim Zusammenführen Live-Dokumente in das neue Segment kopiert und alte Segmente vollständig entfernt.
Mit diesem einfachen Verfahren kann Lucene den Index in Bezug auf die Suchleistung in einem guten Zustand halten.
Hoffe es wird helfen.