2013-09-01 6 views
5

内のフィールドのインデックス作成を制御するために、我々はノーありFIELD.INDEX.NOまたはFIELD.INDEX.ANALYZEDなどを使って、しかし、Luceneの4.0でインデックスにフィールドをインデックスに指定することができませんでしたか利用可能なコンストラクタを定義します。このバージョンのインデックス作成をどのように制御できますか?がどのようにLuceneのバージョン3.9までのLucene 4.0

iのフィールド「名前」は、インデックスに格納することにしたいが、その後、私はLuceneの4.0でそれを行うことができますどのように、インデックスにそれを望んでいない?ならば私が意味しますかField.Index引数を取る

答えて

13

コンストラクタが用意されていますが、4.0では非推奨とされており、使用すべきではありません。代わりに、サブクラスのFieldを調べて、フィールドのインデックス方法を制御する必要があります。

  • StringFieldは、分析されていない標準的なインデックスフィールドです。インデックスされるフィールドは単一のトークンです。それは識別子のような適切なものであり、正確な一致を検索する必要があります。

  • TextFieldは、テキストコンテンツの分析標準(及び、もちろん、インデックス付き)フィールドです。フルテキスト検索には適切な選択です。

  • StoredFieldは全く索引付けされていない保存されたフィールドである(したがって、検索はありません)。 StoredField

    除い

、これらの各々は、Luceneの3.6と類似のコンストラクタ引数としてField.Store値を渡すことができます。この変更の詳細については

Lucene Migration Guideを見てみましょう、と題し特に節:「フィールドのインスタンスからセパレートIndexableFieldType

+0

答えてくれてありがとう。それは役に立ちました。私たちが行うことができますもう一つは、新しいFIELDTYPEを作成し、利用可能な方法を使用して、当社の要件を設定することで、setIndexed()などsetStored()とは、我々は、フィールドのコンストラクタに、このFIELDTYPEオブジェクトを渡すことができます。 –

関連する問題