太阳黑子Solr全文搜索时间得分提升

时间:2018-06-14 09:40:45

标签: ruby-on-rails solr sunspot

我在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

任何人都可以进一步解释评分机制的工作原理,具体来说:

  1. 我如何控制实际得分值(因为2.0并没有真正给出得分值为2)
  2. 为什么不符合评分条件的对象仍会获得分数(虽然较低)
  3. 感谢。

1 个答案:

答案 0 :(得分:0)

计分方式不适用。太阳黑子实际上是在提高分数,而不是将分数设置为确切的值。这也是为什么非增强型字段返回较低值的原因。

This page描述了在Lucene级别上评分(和提升)的工作方式。

由于这不是Sunspot / Solr / Lucene的工作方式,所以我怀疑是否有设置可以修正得分,实际上我无法想到您需要使用的用例做这个。

但是如果您真的想要,实施您自己的解决方案应该很容易:

  • 要仅返回满足特定字段条件的值,应使用sunspot-solr faceting
  • 然后,您可以对结果进行打补丁,以得到想要的分数。