0

我有两个关于 Lucene 4.0 的问题:1)我想改变 Lucene 中的排序,所以我创建了自己的 tfidf 类,然后调用了 TermStats 构造函数

    ts[t] = new TermStats( contents[t].field,contents[t].termtext, contents[t].docFreq, tfidf);

但信息是

    TermStats(String,BytesRef,int,long) is not public in TermStats; cannot be accessed from outside package

有谁知道,我是否真的没有办法改变它?

2) Lucene 确实计算 tf*idf 还是仅计算词频 (tf)?我之所以问,是因为我只阅读了术语频率,但构造函数接受与 idf 相关的 docFreq。

任何帮助表示赞赏。先感谢您。

4

1 回答 1

0

1 - 通常,您将依赖 Lucene 将TermStatistics对象传递到computeWeight自定义Similarity实现的方法中,而不是自己构建它们。

如果您需要直接获取它们,您可以通过调用来完成IndexSearcher.termStatistics(您需要将适当的传递TermContext给该调用,使用静态方法创建TermContext.build)。

2 - 是的,Lucene 的DefaultSimilarity是它的TFIDFSimilarity的实现,正如暗示的那样,它确实会影响 idf 评分。

于 2013-07-07T09:47:32.083 回答