我在Ruby On Rails应用程序中使用Solr搜索引擎。 使用太阳黑子宝石来实施。
关于全文提升机制,我有几个问题。 如果他们满足一定的条件,我试图在结果集上提高某些结果, 所以我们说:
# Posts with pizza, scored higher if featured
Post.search do
fulltext 'pizza' do
boost(2.0) { with(:featured, true) }
end
end
我希望所有包含“比萨饼”的帖子都包含在内。并且是特色=真, 会得到 2.0 的分数,所有其余的都没有得到任何得分或得分 0 。
实际发生的是所有帖子的精选= true,得到一个我无法预测的分数(即 5.089861 ) 无论我在搜索块中设置了 2.0 。
即使我将提升数量增加到 20.0 或 50.0 ,或者如果我添加了另一个提升,如果帖子匹配另一个条件,实际分数仍然在< strong> 5.XXX 区域......
此外,帖子的特色=假,也有 0.09928045 (ish)的分数 我希望这是绝对的 0 。
任何人都可以进一步解释评分机制的工作原理,具体来说:
感谢。
答案 0 :(得分:0)
计分方式不适用。太阳黑子实际上是在提高分数,而不是将分数设置为确切的值。这也是为什么非增强型字段返回较低值的原因。
This page描述了在Lucene级别上评分(和提升)的工作方式。
由于这不是Sunspot / Solr / Lucene的工作方式,所以我怀疑是否有设置可以修正得分,实际上我无法想到您需要使用的用例做这个。
但是如果您真的想要,实施您自己的解决方案应该很容易: