我正在尝试在术语枚举中获取每个术语的文档频率。但每次所有条款的文档频率都只有“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);
}
答案 0 :(得分:0)
来自IndexReader.getTermVector
的条款实例的行为就好像您有一个单一文档索引,完全由指定的文档组成。由于在此上下文中只需要考虑一个文档,因此您应始终获得docfreq()
= 1.您可以使用IndexReader.docFreq
方法从完整索引生成docfreq:
int docNumbersWithTerm = reader.docFreq(new Term(termsEnum.term(), field));
System.out.println(docNumbersWithTerm);