2016-05-29 5 views
2

(現在はLucene 4.6を使用しています)。Lucene - インデックスを付ける必要のない文字列フィールド

索引付けされていないorg.apache.lucene.document.Documentにテキスト情報を格納することが望ましくないように思われるのはちょっと疑問です。 TextFieldは索引付けされ、トークン化されます。 StringFieldは索引付けされていますが、トークン化されていません。

しかし、あなたのorg.apache.lucene.document.Documentの他の情報に付随している質問Stringが必要だと思うが、それ自体は決して質問の対象にはならないだろうか?

org.apache.lucene.document.Field.Indexには、「フィールド値のインデックスを作成しない」という意味の「いいえ」がありますが、現在は非推奨です。

なぜですか? "不活性" String情報を索引付けされた(場合によってはトークン化された)より重要なフィールドに付けるより良い方法がありますか?

答えて

1

あなたは

Field(java.lang.String, java.lang.String, org.apache.lucene.document.FieldType) 

FIELDTYPEがproperty

public void setIndexed(boolean value) 

を持っているあなたのフィールドに、次のconstructorを使用するかは、あなたがあなたのフィールドタイプに必要でデフォルトコンストラクタを上書きするカスタムフィールドを作成することができます:

public final class StringNoIndexedField extends Field { 
    public static final FieldType TYPE_NOT_INDEXED = new FieldType(); 
    static { 
     TYPE_NOT_INDEXED.setIndexed(false); 
     TYPE_NOT_INDEXED.setStored(true); 
     TYPE_NOT_INDEXED.setTokenized(false); 
     TYPE_NOT_INDEXED.freeze(); 
    } 

    public StringNoIndexedField(String name, String value) { 
    super(name, value, TYPE_NOT_INDEXED); 
    } 
} 
+1

ありがとうございます...私はそのバイトarrについて少し混乱していますあなたの最初の解決策では...(どこから来て、それは何ですか?)私は非常に遅くない限り、あなたの2番目のソリューションでは、 "StringField"ではなく "StringNoIndexedField"であるべきではありません...もしそうなら、あなたはこれを変更してください??? –

+0

コメントありがとうございます。私はこの問題を修正しました。 –

関連する問題