【问题标题】:Solr score boost - based on number of likesSolr 分数提升 - 基于喜欢的数量
【发布时间】:2015-12-25 06:16:47
【问题描述】:

我在 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 的新手,我无法找到任何文档/文章来了解更多关于此的信息。

【问题讨论】:

  • 感谢@GrafikRobot!很高兴看到我不再孤单地看门狗

标签: solr solr-boost


【解决方案1】:

这是在Function Query documentation 中。

recip

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 参数)。

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

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

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

希望能给你一个起点。

【讨论】:

  • 我得到了它背后的公式。但是靴子是如何工作的?最高值 ^$vote_boost 如何影响分数?有蚂蚁公式吗? solr 如何在内部管理它?
  • ^$vote_boost 将结果乘以提升值(编辑后的答案)。但是,命中分数都是归一化的,所以 Solr 返回的分数不会直接与公式对齐......但是排序将与手动计算时的排序相同。
  • 为了更好地理解公式,最初忽略 steepnessboost 值可能会有所帮助。简体:total / (rev-ordinal + total)。因此,在 10 项选举中,获胜者将导致此处的简化函数输出10/(1+10) ~= 0.91,而最后一位将导致简化函数输出10/(10+10) = 0.5
猜你喜欢
  • 1970-01-01
  • 2015-04-22
  • 2012-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多