14.7. Zusammenarbeit Mit Java Lucene

14.7.1. Dateiformate

Zend_Search_Lucene Indexdateiformate sind binär kompatibel mit Lucene Version 1.4 und höher.

Eine detaillierte Beschreibung dieses Formats ist hier erhältlich: http://lucene.apache.org/java/docs/fileformats.html.

14.7.2. Indexverzeichnis

Nach der Indexerstellung wird das Indexverzeichnis verschiedene Dateien enthalten:

  • Die segments Datei ist eine Liste der Indexsegmente.

  • Die *.cfs Dateien enthalten die Indexsegmente. Beachte! Ein optimierter Index enthält immer nur ein Segment.

  • Die deletable Datei ist eine Liste von Dateien, die nicht mehr vom Index verwendet werden, aber nicht gelöscht werden konnten.

14.7.3. Java Quellcode

Das unten gelistete Java Programm stellt ein Beispiel für die Indizierung einer Datei mit Java Lucene dar:

/**
* Indexerstellung:
*/
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.document.*;

import java.io.*

...

IndexWriter indexWriter = new IndexWriter("/data/my_index", 
                                          new SimpleAnalyzer(), true);

...

String filename = "/path/to/file-to-index.txt"
File f = new File(filename);

Document doc = new Document();
doc.add(Field.Text("path", filename));
doc.add(Field.Keyword("modified",DateField.timeToString(f.lastModified())));
doc.add(Field.Text("author", "unknown"));
FileInputStream is = new FileInputStream(f);
Reader reader = new BufferedReader(new InputStreamReader(is));
doc.add(Field.Text("contents", reader));

indexWriter.addDocument(doc);
        

14.7.4. Verwendung von LuceneIndexCreation.jar

Um schnell mit Zend_Search_Lucene starten zu können, wurde eine JAR Datei (Java) erstellt, um einen Index von der Kommandozeile aus zu erstellen. Für weitere Informationen zu JAR Dateien besuche bitte: http://java.sun.com/docs/books/tutorial/jar/basics/index.html.

LuceneIndexCreation.jar verwendet Textdateien und erstellt daraus den Index. Verwendung:

    java -jar LuceneIndexCreation.jar [-c] [-s] <document_dir> <index_dir>
    -c   - erzwinge Index mit Groß- und Kleinschreibung
    -s   - lege Inhalte im Index ab
    

Dieses Kommando verwendet das Verzeichnis <document_dir>, inklusive aller Unterverzeichnisse, und erstellt einen Lucene Index. Der Index besteht aus einem Satz von Dateien, die in einem separaten Verzeichnis abgelegt werden, dass durch <index_dir> spezifiziert wird.

Für jedes zu indizierende Dokument, erstellt LuceneIndexCreation ein Dokumentobjekt mit drei Felder: ein contents Feld mit dem Inhalt des Dokuments, ein modified Feld mit dem Änderungsdatum der Datei und der komplette Pfad und Dateiname in einem path Feld.

Wenn die -c Option angegeben wird, wird erzwungen, dass der Index die Groß- und Kleinschreibung beachtet. Andernfalls werden alle Begriffe vor dem Hinzufügen in den Index in Kleinbuchstaben konvertiert.

Wenn die -s Option angegeben wird, wird der Dokumenteninhalt auch im Index abgelegt und kann über die path und modified Felder zurückgeholt werden.

Andernfalls werden nur die path und modified Felder gespeichert und das contents Feld wird nur indiziert. In diesem Fall muß der Dokumenteninhalt von seinen originalen Quelle mittels des Pfads zurückgeholt werden.

Bitte sei vorsichtig, die Verwendung der -s option vergrößert die Indexgröße fast um das Fünffache.