Lucene - 通过TermsEnum迭代docfreq

时间:2014-03-25 11:53:13

标签: lucene full-text-search document frequency

我正在尝试在术语枚举中获取每个术语的文档频率。但每次所有条款的文档频率都只有“1”。任何提示,问题可能是什么?这是我的代码:

Terms terms = reader.getTermVector(docId, field);
TermsEnum termsEnum = null;
termsEnum = terms.iterator(termsEnum);
BytesRef termText = null;
while((termsEnum.next()) != null){
    int docNumbersWithTerm = termsEnum.docfreq();
    System.out.println(docNumbersWithTerm);
}

1 个答案:

答案 0 :(得分:0)

来自IndexReader.getTermVector的条款实例的行为就好像您有一个单一文档索引,完全由指定的文档组成。由于在此上下文中只需要考虑一个文档,因此您应始终获得docfreq() = 1.您可以使用IndexReader.docFreq方法从完整索引生成docfreq:

int docNumbersWithTerm = reader.docFreq(new Term(termsEnum.term(), field));
System.out.println(docNumbersWithTerm);