Index-Dateiformate von Lucene


[ Seminar "Java und Werkzeuge für das Web" ] ... [ Inhaltsverzeichnis ] ... [ zurück ] ... [ weiter ] ... [ Links und Literaturverzeichnis ] [ eMail an den Autor ]

Übersicht: Index-Dateiformate von Lucene


Überblick

Lucene ist komplett in Java geschrieben.
Es gibt Bemühungen, Versionen von Lucene auch in anderen Programmiersprachen zu schreiben.
Um das möglich zu machen, ist es notwendig, eine sprachunabhängige Definition des Lucene-Indexformats zu formulieren.

Definitioen

Das Grundkonzept in Lucene besteht aus Index, Dokument, Feld und Ausdruck. Index-Diagramm

Ist der gleiche String in zwei veschiedenen Feldern, so sind das zwei Ausdrücke. Somit wird ein Ausdruck repräsentiert als ein String-Paar, Feldname und Feldinhalt.

Invertiertes Indizieren

Invertiertes Indizieren ("inverted index"): Es gibt zwei Arten von Feldern:

Segmente

Indizes werden aus mehreren Sub-Indizes (Segmente) erstellt. Indizes entstehen aus: Bei einer Suche können mehrere Segmente und / oder mehrere Indizes verwendet werden, jeder Index kann aus mehreren Segmenten entstanden sein.

Dokumentnummern

Intern werden die zu indizierenden Dokumente durch eine Zahl, der Dokument-Nummer referenziert. Dokumentnummern können sich ändern, daher ist es nicht ratsam, diese Nummern außerhalb von Lucene zu setzen:

Überblick über Segmente

Jedes Segment entält Folgendes:

Dateinamen

Alle Dateien (Dateien, in denen die Indexinformationen gespeichert werden) haben den gleichen Namen mit unterschiedlichen Erweiterungen.

Typischerweise werden alle diese Dateien im selben Verzeichnis gespeichert, obwohl das nicht zwingend erforderlich ist.

Primitive Datentypen

Folgende primitive Datentypen werden in diesen Dateien benutzt:

Die einzelnen Dateien

Segmentdatei

Diese Datei speichert die aktiven Segmente des Index, Dateiname: "segments", listet jedes Segment beim Namen und enthält dessen Größe.
Segmente --> SegAnzahl, <SegName, SegGröße>^SegAnzahl
SegAnzahl, SegGröße --> UInt32 (SegGröße ist die Anzahl der Dokumente des Segments)
SegName --> String (Name, wie der Datei-Prefix aller Dateien des Segment-Index)

Blockierdateien

Bestimmte Dateien werden benutzt um anzuzeigen, dass ein anderer Prozess auf den Index zugreift.

Löschdatei

Die Datei "deletable" gibt die Dateien an, die der Index nicht mehr benutzt, die aber nicht gelöscht werden konnten, da die Datei z. B. gerade geöffnet ist:
Löschdatei --> Anzahl, <Dateiname>^Anzahl.
Anzahl --> UInt32
Dateiname --> String

Dateien pro Segment

Von folgenden Dateien existiert eine pro Segment:

Beschränkungen

Es gibt eine Reihe von Stellen, in denen diese Dateiformate die maximale Anzahl der Ausdrücke und Dokumente auf eine 32-Bit große Zahl beschränken. Es gibt nur zwei Stellen, an denen Werte eine feste Maximalgröße haben müssen: An allen anderen Stellen können UInt32 ind VInt umgewandelt werden.

[ Seminar "Java und Werkzeuge für das Web" ] ... [ Inhaltsverzeichnis ] ... [ zurück ] ... [ oben ] ... [ weiter ] ... [ Links und Literaturverzeichnis ] [ eMail an den Autor ]