インデックスの作成1章で紹介した簡単なサンプルを元に改良を加えて行きます。}まずはじめにインデックスを作成するIndexWriterの初期化を行います。IndexWriterは新規に作成するだけでなく、既存のインデックスに情報を追加することも出来ます。IndexWriterのコンストラクタの第一引数は、インデックスを保存するフォルダのパスです。第二引数は、解析を行うプログラムのインスタンスです。日本語を形態素解析する場合、org.apache.lucene.analysis.ja.JapaneseAnalyzerを指定する必要があります。第三引数は、インデックスを新規作成するかどうか指定するフラグです。trueであれば既存のインデックスは削除され、新たに一から作成することになります。他のIndexWriterによって開かれているインデックスはロックされており、書き込むことが出来ません。そのためインデックスを作成するプログラムは、常に1つしか動作しない作りになっていることが望ましいです。次に文書の解析を行います。あるディレクトリに含まれるファイルの一覧は、java.io.Fileのlist()メソッドで取得出来ます。ここではサブディレクトリを考慮に入れていません。テキストファイルのような、解析を必要としないファイルを対象としています。HTMLファイルのような解析を必要とするファイルを読み込む場合は、自前の解析プログラムを用意しなければなりません。逆に言えば、解析プログラムを用意さえすれば、どのような文書でも検索対象にすることが出来ます。インデックスの登録には、DocumentクラスとFieldクラスを用います。Documentは1つの文書単位を表すクラス、Fieldクラスは文書の属性を表すクラスです。インデックスへの登録・インデックスからの検索はDocument単位で行われます。1つのDocumentは複数のFieldを持ち、各Fieldは属性の名前とその値を持ちます。Fieldの値が検索対象となります。基本的にFieldの値はString型ですが、java.io.Readerインスタンスを指定することも出来ます。インデックスに文書を追加していきます。全ての文書を追加し終えたら、最後にIndexWriterのoptimize()メソッドを呼び、インデックスの最適化を行います。Textを触ってみた。