22.8. Zusammenarbeit Mit Java Lucene
Zurück | Kapitel 22. Zend_Search | Weiter

## 22.8. Zusammenarbeit Mit Java Lucene

### 22.8.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.

### 22.8.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.

### 22.8.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);

### 22.8.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.

Zurück | Nach oben | Weiter
22.7. Erweiterbarkeit | Zum Anfang | Kapitel 23. Zend_Server