1

我对 Lucene 很陌生。我有一个 Lucene 4.0 索引,我想计算第 n 个最常用的词来创建一个停用词列表。我发现在以前版本的 Lucene 中处理此问题的帖子,例如从 Lucene 索引中获取最高频率术语,但似乎 reader.terms() 在 4.0 中已被弃用。

我如何使用 Lucene 4.0 实现这一点?

谢谢!

4

2 回答 2

1

您可能想查看由 Lucene 贡献者之一 Mike McCandless 撰写的Lucene 4.0 文章中的新索引统计信息。您正在寻找的可能是TermsEnum.totalTermFreq().

于 2012-11-15T16:09:50.867 回答
1

这是使用HighFreqTermslucene-misc 包的示例。

请注意,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());
}
于 2014-12-04T17:04:58.070 回答