Search Solr偏差值的可接受范围
我最近做了很多工作,在搜索时在Solr中应用bias,以获得更相关的结果,我很好奇的一件事是bias值的可接受范围。例如,在我看到的一个Solr实现中,适用的偏差值范围为0.1到21.0,中间值为0.2、0.3、0.5、0.8、1.0、2.0、3.0、5.0、8.0和13.0。在另一个地方,我看到最大值为100。在我读过的所有东西中,我从未见过可接受值范围的定义。有这样的事吗?我猜在偏差背后有一些复杂的数学概念,所以我也想知道在定义偏差值范围时,最佳实践是什么 沿着这些思路的另一个问题是,偏差值之间的差异起作用了吗?例如,如果我有两个字段title和body,我在qf参数中添加Search Solr偏差值的可接受范围,search,solr,Search,Solr,我最近做了很多工作,在搜索时在Solr中应用bias,以获得更相关的结果,我很好奇的一件事是bias值的可接受范围。例如,在我看到的一个Solr实现中,适用的偏差值范围为0.1到21.0,中间值为0.2、0.3、0.5、0.8、1.0、2.0、3.0、5.0、8.0和13.0。在另一个地方,我看到最大值为100。在我读过的所有东西中,我从未见过可接受值范围的定义。有这样的事吗?我猜在偏差背后有一些复杂的数学概念,所以我也想知道在定义偏差值范围时,最佳实践是什么 沿着这些思路的另一个问题是,偏差值
title^8 body^2
这是否意味着标题字段的权重是正文字段的4倍,还是会增加
title^3 body^2
是否具有相同的效果?您可以将
debugQuery=true
附加到任何查询中,以查看每个字段对计算分数的贡献
qf
中给出的权重乘以为比赛计算的分数,因此title^8
将比title^3
对title
字段的最终分数贡献更大
这可以很快测试。使用^2.0
:
(MATCH) max of:\n 0.13514908 = (MATCH) weight(field:term^2.0 in 36)
(MATCH) max of:\n 0.27026632 = (MATCH) weight(field:term^4.0 in 36)
使用^4.0
:
(MATCH) max of:\n 0.13514908 = (MATCH) weight(field:term^2.0 in 36)
(MATCH) max of:\n 0.27026632 = (MATCH) weight(field:term^4.0 in 36)
。。这正好是两倍
因此,^8
vs^2
意味着第一个字段的重量是第二个字段的四倍
请注意,这种比较在这里是有效的,因为两个查询都使用相同的查询规范化(这不会是boost值之间存在更大差异的情况,不同查询之间的分数实际上是不可比较的)
可接受的值在双精度范围内,而“最佳实践”是尝试获得您正在寻找的匹配配置文件。这方面没有硬科学,但你必须调整这些值(如果你有足够的信号,还有机器学习选项)才能得到你想要的结果列表