我对Lucene很新。我有一个Lucene 4.0索引,我想计算第n个最常用的单词来创建一个禁用词列表。我发现在以前版本的Lucene中处理这个帖子,例如Get highest frequency terms from Lucene index,但似乎在4.0中不推荐使用reader.terms()。
我怎样才能使用Lucene 4.0实现这一目标?
谢谢!
答案 0 :(得分:1)
您可能需要查看由Lucene贡献者之一Mike McCandless撰写的New index statistics in Lucene 4.0 article。您正在寻找的可能是TermsEnum.totalTermFreq()
。
答案 1 :(得分:1)
以下是使用lucene-misc包中的HighFreqTerms
的示例。
请注意,如果您想按字词频率排名,则可以使用HighFreqTerms.TotalTermFreqComparator
:
DocFreqComparator cmp = new HighFreqTerms.DocFreqComparator();
TermStats[] highFreqTerms = HighFreqTerms.getHighFreqTerms(reader, n, "text", cmp);
List<String> terms = new ArrayList<>(highFreqTerms.length);
for (TermStats ts : highFreqTerms) {
terms.add(ts.termtext.utf8ToString());
}