# Java Lucene との相互運用

## ファイルフォーマット

`Zend_Search_Lucene` のインデックスファイルのフォーマットは、 Lucene バージョン 1.4 以降のフォーマットとバイナリ互換性があります。

このファイルフォーマットについての詳細な説明は にあります。 現在 (Zend Framework 1.6 以降) サポートしている Lucene インデックスファイルフォーマットのバージョンは 2.1 です。

## インデックスディレクトリ

インデックスを作成すると、 インデックスディレクトリにはいくつかのファイルが出来上がります。

- `segments` ファイルはインデックスセグメントの一覧です。

- `*.cfs` ファイルにはインデックスセグメントが含まれます。 注意! 最適化されたインデックスは常にひとつのセグメントだけになります。

- `deletable` ファイルは、 もはやインデックスからは使用されていないけれども削除できないファイルの一覧です。

## Java のソースコード

以下の Java プログラムリストは、Java Lucene を使用してファイルのインデックスを作成する方法を示す例です。

    /**
    * インデックスの作成
    */
    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);