2

私は Lucene 3.6 を使用しています。検索時に将来使用するために、ドキュメントの特定のフィールドの各用語のスコアを取得したいと考えています。インデックスを保存するために、次のようなドキュメントを作成しました。

Document doc = new Document();
doc.add(new Field("description", entry.getDescription(), Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS));
writer.addDocument(doc);
writer.close(true);

たとえば、ドキュメントに「フットボール」という用語があります。

...
1.623904 = (MATCH) fieldWeight(description:football in 1775), product of:
1.0 = tf(termFreq(description:football )=1)
8.660821 = idf(docFreq=5, maxDocs=12741)
0.1875 = fieldNorm(field=description, doc=1775)
...

私はこのコードを使用して取得tfしていますidf:

TermFreqVector freqV = indexReader.getTermFreqVector(docId, "description");
for (int j = 0; j < freqV.getTerms().length; j++) {
    String term = freqV.getTerms()[j];
    int freq = freqV.getTermFrequencies()[j];
    float idf = similarity.idfExplain(new Term("descpription", term), searcher).getIdf();
}

fieldNormしかし、検索時に取得する方法がわかりません。誰でもこの質問を手伝ってもらえますか?

ありがとう。

4

0 に答える 0