2.2. インデックスの構成
インデックスに含まれる全ての文書は、幾つかのフィールドとその値を持っています。 文書はDocumentクラスで管理され、フィールドはFieldクラスで管理されます。
org.apache.lucene.document.Field
Fieldには幾つか種類があって、あるものはインデックス化されて検索対象となったり、 あるものは保存されるだけで検索対象とならなかったりします。 以下のような性質の違いがあります。
- Fieldの値をインデックスに保存するかどうか(store)
- Fieldの値に対して、インデックスをつけるかどうか(index)
- Fieldの値に対して、形態素解析を行うかどうか(token)
これらの性質の設定はコンストラクタで行います。 第1引数と第2引数は、それぞれ名前と値を意味します。
Field(String name, String value, boolean store, boolean index, boolean token)
- storeがTrueであれば、検索後にその値を取得することが出来ます。
- indexがTrueであれば、その値にインデックスをつけ、検索対象とすることが出来ます。
- tokenがTrueであれば、形態素解析が行われます。
- store又はindexがTrueでなければ、インデックスに情報が保存されません。
またFieldクラスは、性質があらかじめ設定されたFieldインスタンスを返す、次のようなstaticなメソッドを持ちます。
- Keyword(String name, String value) - store = true, index = true, token = false
- インデックスをつけると同時に保存します。
- Text(String name, String value)
- Text(String name, Reader value) - store = true, index = true, token = true
- 第二引数で指定された文字列(文書の本文など)を形態素解析し、保存します。またインデックスもつけます。
- UnIndexed(String name, String value) - store = true, index = false, token = false
- 値のみを保存します。検索する必要の無い情報を対象にします。
- UnStored(String name, String value) - store = false, index = true, token = true
- 形態素解析し、インデックスをつけますが保存しません。
org.apache.lucene.document.Document
インデックスに保存する、1つの文書単位を表します。 Documentインスタンスは、複数のFieldインスタンスを持ちます。 storeをtrueに設定したFieldインスタンスのみ、検索の際にDocumentインスタンスを通して取り出すことができます。
Document doc = new Document(); Field field = new Field(name,value,store,index,token); doc.add(field);