从Lucene 4.0索引中获取最常用的单词

时间:2012-11-15 08:05:28

标签: lucene

我对Lucene很新。我有一个Lucene 4.0索引,我想计算第n个最常用的单词来创建一个禁用词列表。我发现在以前版本的Lucene中处理这个帖子,例如Get highest frequency terms from Lucene index,但似乎在4.0中不推荐使用reader.terms()。

我怎样才能使用Lucene 4.0实现这一目标?

谢谢!

2 个答案:

答案 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());
}