目次へ

2.2. インデックスの構成

インデックスに含まれる全ての文書は、幾つかのフィールドとその値を持っています。 文書はDocumentクラスで管理され、フィールドはFieldクラスで管理されます。

org.apache.lucene.document.Field

Fieldには幾つか種類があって、あるものはインデックス化されて検索対象となったり、 あるものは保存されるだけで検索対象とならなかったりします。 以下のような性質の違いがあります。

  1. Fieldの値をインデックスに保存するかどうか(store)
  2. Fieldの値に対して、インデックスをつけるかどうか(index)
  3. 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);

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp