2

私が取り組んでいるコード ベースで、lucene ドキュメントを作成するときに、同じフィールド名が異なる値 (用語) に何度も使用されていることがわかりました。

 doc.add(new Field("sameName", value1, store, index));
 doc.add(new Field("sameName", value2, store, index));
 ...
 doc.add(new Field("sameName", value3, store, index));

それが正しいか?それは何に役立ちますか?

次に、このフィールドの名前が検索中に使用されます。

     QueryParser parser = new QueryParser(Version.LUCENE_40, "sameName", new StandardAnalyzer(
            Version.LUCENE_40));

ドキュメントには他にも多くのフィールドがありますが、検索中にフィールド「sameName」のみが使用されているようです。私にとっては奇妙です。それは理にかなっていますか?

4

1 に答える 1

1

フィールドには、複数の値でインデックスを付けることができます。たとえば、ドキュメント内のすべての単語だけでなく、作成者やタグなどのメタデータも含む「コンテンツ フィールド」を作成できます。

検索の問題に関しては、QueryParse を初期化するフィールド (この場合は「sameName」) によっては、これが唯一の検索フィールドになります。もちろん、QueryParser に複数のフィールドを追加することもできます。

于 2013-01-31T18:16:19.523 に答える