我在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的新手,我无法找到任何文件/文章来了解这一点。
答案 0 :(得分:1)
这是Function Query documentation。
<强> RECIP 强>
与recip(x,m,a,b)实现a /(m * x + b)的倒数函数。 m,a,b是常数,x是任何数字字段或任意复杂的函数。
<强> rord 强>
索引值的反转序数。 (在您的情况下,函数: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
提升结果以创建boost函数(来自bf
param)。
=($ total /($ vote_steepness * rev-ordinal-of-vote-result + $ total))* $ vote_boost
从查询的其余部分添加到文档分数中。 (然后在返回分数之前,它们在所有匹配的文档中进行标准化)
$<var>
值可以在solrconfig.xml中定义,也可以更常见地作为单独的http查询参数传递。
希望能给你一个起点。