Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lucene 4.0:TermStats在TermStats中不是公共的;无法从包外部访问_Lucene - Fatal编程技术网

Lucene 4.0:TermStats在TermStats中不是公共的;无法从包外部访问

Lucene 4.0:TermStats在TermStats中不是公共的;无法从包外部访问,lucene,Lucene,关于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

关于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

感谢您的帮助。
提前感谢。

1-通常,您会依靠Lucene将
TermStatistics
对象传递到自定义
相似性
实现的方法中,而不是自己构建它们

如果需要直接获取它们,可以通过调用(需要将相应的
TermContext
传递给该调用,该调用使用静态方法创建)


2-是的,Lucene的是它的一个实现,正如所暗示的那样,这确实是idf得分的一个因素。

非常感谢您的快速回答!好,总结一下Lucene retuns的排名是tf*idf计算的结果。在任何情况下,如果我想影响它,我会将我的计算应用到Lucene的排名之上,而不调用任何TermStats提取器。我尝试实现自己的TFIDF类。我必须给这个类提供termfrequency和其他参数。要获取termfrequency,我使用termStats[t].totalTermFreq,但它总是返回零。而termStats[t].docFreq返回术语出现的文档数。你知道为什么会这样吗?谢谢。我意识到的另一件事是termStats[t]。totalTermFreq不返回termfrequency,但它是Lucene对tf*idf的结果。如果这是真的,那么a)为什么我总是得到零,b)没有IDF我怎么能得到简单的TF?a)猜测一下,这些术语没有正确的索引。您是否使用至少
FieldInfo.IndexOptions.DOCS\u和\u FREQS
为字段编制索引?b) 要在不使用idf评分的情况下使用默认评分算法,请创建自定义相似性,扩展
DefaultSimilarity
,并使用仅返回1.0的方法覆盖
idf