gpt4 book ai didi

solr/lucene idf 分数

转载 作者:行者123 更新时间:2023-12-04 17:10:59 34 4
gpt4 key购买 nike

我试图更好地了解 lucene 如何对我的搜索进行评分,以便我可以对我的搜索配置或文档内容进行必要的调整。

以下是分数明细的一部分。

产品:

    0.34472802 = queryWeight, product of:
2.2 = boost
7.880174 = idf(docFreq=48, maxDocs=47667)
0.019884655 = queryNorm
1.9700435 = fieldWeight in 14363, product of:
1.0 = tf(freq=1.0), with freq of:
1.0 = termFreq=1.0
7.880174 = idf(docFreq=48, maxDocs=47667)
0.25 = fieldNorm(doc=14363)
0.26806915 = (MATCH) max of:
0.07832639 = (MATCH) weight(shortDescription:tires^1.1 in 14363) [DefaultSimilarity], result of:
0.07832639 = score(doc=14363,freq=1.0 = termFreq=1.0

我了解如何计算提升,因为这是我的配置值

但是 idf 是如何计算的(7.880174 = idf 值)。

根据lucene,idf公式为:idf(t) = 1 + log(numDocs/(docFreq+1))

我检查了核心管理控制台,发现我的 docFreq = maxDocs = 47667。

使用 lucene 的公式,我无法计算出预期的 7.880174。相反,我得到:idf = 3.988 = 1 + log(47667/(48+1))。

我的公式中是否缺少某些东西。

最佳答案

我想你的 log函数选择 10 作为基数,而在 lucene 中我们选择 e 作为基数。

log(47667/(48+1), 10) = 2.9880217397306
log(47667/(48+1), e) = 6.8801743154459
idf的源代码lucene的方法是:
  public float idf(int docFreq, int numDocs) {
return (float)(Math.log(numDocs/(double)(docFreq+1)) + 1.0);
}

如您所见, idf使用 Java Math.log计算 idfMath.log选择 e 作为 log功能。见 Java Math api详情。

关于solr/lucene idf 分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13752403/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com