Solr 分数提升 - 基于喜欢的数量

Solr score boost - based on number of likes

我在 solr 文档中添加了 fs_votingapi_result 这表示喜欢的数量。

我发现下面的函数可以根据 fs_votingapi_result.

提高分数

但我无法理解这背后的逻辑 - 额外的参数是什么 $vote_steepness$total$total$vote_boost

bf=recip(rord(fs_votingapi_result),$vote_steepness,$total,$total)^$vote_boost

我是 solr 的新手,我找不到任何 document/article 来了解更多关于这个的信息。

这是在 Function Query documentation

食谱

recip(x,m,a,b) 实现 a/(m*x+b) 的倒数函数。 m、a、b 是常量,x 是任何数字字段或任意复杂的函数。


罗德

索引值的逆序数。 (在你的例子中,函数:rord(fs_votingapi_result) 会产生 1 的记录,获得最多的选票,2 获得第二多的选票,等等......)


所以

recip(rord(fs_votingapi_result),$vote_steepness,$total,$total)

= $total / ($vote_steepness * rev-ordinal-of-vote-result + $total)

然后结果被 $vote_boost 提升以创建提升函数(来自 bf 参数)。

=($总计/($vote_steepness * rev-ordinal-of-vote-result + $total))* $vote_boost

从查询的其余部分添加到文档分数。 (然后在返回分数之前,它们在所有匹配的文档中被归一化)

$<var> 值要么在 solrconfig.xml 中定义,要么更常见地作为单独的 http 查询参数传递。

希望这能给你一个起点。