Neue Features im Überblick

Apache Lucene 4.0

Uwe Schindler


Lucenes Welt – Ordnen, finden, klassifizieren

Unter der Überschrift „Flexible Indexing“ läuft ein Redesign des Fileformats von Lucene. Mit der Version 4.0 ist es erstmals möglich, auf einfache Weise die Speicherung der Indexdaten wie das Term Dictionary, die Posting Lists, gespeicherte Feldinhalte oder Payloads anzupassen (ohne den originären Quelltext zu patchen). Zwischen die bereits bekannten Komponenten IndexWriter/IndexReader und der Directory-Klasse (Low-Level-I/O-Komponente von Lucene) wurde der so genannte Codec Layer eingefügt (Abb. 1).

Abb. 1: Übersicht über die Einordnung des neuen „Codec Layer“ in Lucene 4.0

Während der Index aufgebaut wird, erhält das Codec alle Terme, die Positionen und Dokumentennummern. Es hat dann die Aufgabe, diese Informationen unter Benutzung der Directory-Klasse auf das Speichermedium zu schreiben. Damit sind alle Möglichkeiten offen, das Dateiformat beliebig anzupassen. Gemeinsam ist allen Datendateien nur der Header, der eine Datei eindeutig als zu Lucene gehörig markiert, und der Name der Codec-Komponente, die für diese Datei zuständig ist. Wie allerdings zum Beispiel das Term Dictionary dann schließlich intern strukturiert und auf der Platte materialisiert wird, ist komplett dem Codec überlassen.

Welches Codec zum Indexieren benutzt wird, kann dem IndexWriter in seiner Konfiguration mitgegeben werden. Dokumente bestehen in Lucene aus mehreren Feldern mit eindeutigen Namen, z. B. title, content, keywords, sodass neben dem allgemeinen Indexformat auch für jedes Feld ein anderes „PostingsFormat“ angegeben werden kann, was schließlich dafür zuständig ist, das Term Dictionary und die Dokumentenliste für jeden Term abzuspeichern. Neben dem Standard-Codec („Lucene40“) gibt es noch zahlreiche, für verschiedene Anwendungszwecke geeignete Formate, z. B. „Pulsing“, „Blockpostings“ oder „Simple Text“. Letzteres ist sehr gut für Debugging-Zwecke einsetzbar, da es alles im Textformat ablegt und die Indexdateien dadurch mit einem einfachen Texteditor betrachtbar sind. Alle diese Zusatz-Codecs sind in einem eigenen Modul zu finden. Nähere Informationen findet der Leser in den Javadocs oder einigen Blogposts, die die Interna dieser Codecs erklären.

Die Codecs sind nicht nur für das Dateiformat zuständig, auch die verwendeten Algorithmen und Strukturen zum Lookup von Termen und Dokumenten sind anpassbar. Es ist jedem Codec überlassen, wie es beim Schreiben und Lesen die Indexstrukturen im Programmcode abbildet, solange nach a...

Neue Features im Überblick

Apache Lucene 4.0

Uwe Schindler


Lucenes Welt – Ordnen, finden, klassifizieren

Unter der Überschrift „Flexible Indexing“ läuft ein Redesign des Fileformats von Lucene. Mit der Version 4.0 ist es erstmals möglich, auf einfache Weise die Speicherung der Indexdaten wie das Term Dictionary, die Posting Lists, gespeicherte Feldinhalte oder Payloads anzupassen (ohne den originären Quelltext zu patchen). Zwischen die bereits bekannten Komponenten IndexWriter/IndexReader und der Directory-Klasse (Low-Level-I/O-Komponente von Lucene) wurde der so genannte Codec Layer eingefügt (Abb. 1).

Abb. 1: Übersicht über die Einordnung des neuen „Codec Layer“ in Lucene 4.0

Während der Index aufgebaut wird, erhält das Codec alle Terme, die Positionen und Dokumentennummern. Es hat dann die Aufgabe, diese Informationen unter Benutzung der Directory-Klasse auf das Speichermedium zu schreiben. Damit sind alle Möglichkeiten offen, das Dateiformat beliebig anzupassen. Gemeinsam ist allen Datendateien nur der Header, der eine Datei eindeutig als zu Lucene gehörig markiert, und der Name der Codec-Komponente, die für diese Datei zuständig ist. Wie allerdings zum Beispiel das Term Dictionary dann schließlich intern strukturiert und auf der Platte materialisiert wird, ist komplett dem Codec überlassen.

Welches Codec zum Indexieren benutzt wird, kann dem IndexWriter in seiner Konfiguration mitgegeben werden. Dokumente bestehen in Lucene aus mehreren Feldern mit eindeutigen Namen, z. B. title, content, keywords, sodass neben dem allgemeinen Indexformat auch für jedes Feld ein anderes „PostingsFormat“ angegeben werden kann, was schließlich dafür zuständig ist, das Term Dictionary und die Dokumentenliste für jeden Term abzuspeichern. Neben dem Standard-Codec („Lucene40“) gibt es noch zahlreiche, für verschiedene Anwendungszwecke geeignete Formate, z. B. „Pulsing“, „Blockpostings“ oder „Simple Text“. Letzteres ist sehr gut für Debugging-Zwecke einsetzbar, da es alles im Textformat ablegt und die Indexdateien dadurch mit einem einfachen Texteditor betrachtbar sind. Alle diese Zusatz-Codecs sind in einem eigenen Modul zu finden. Nähere Informationen findet der Leser in den Javadocs oder einigen Blogposts, die die Interna dieser Codecs erklären.

Die Codecs sind nicht nur für das Dateiformat zuständig, auch die verwendeten Algorithmen und Strukturen zum Lookup von Termen und Dokumenten sind anpassbar. Es ist jedem Codec überlassen, wie es beim Schreiben und Lesen die Indexstrukturen im Programmcode abbildet, solange nach a...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang