Searchkick-与多个字段匹配的得分

时间:2018-07-27 08:59:40

标签: ruby-on-rails elasticsearch searchkick

当我有多个匹配的字段时,得分不会增加。

我的搜索方法:

search_results = Subscription.search(
        params[:query], # The search query ("martin" in my example)
        fields: Admin::GlobalSearch.boosts, # An array like ["prénom^3","nom^3.5","email^1.5"]
        operator: "or",
        load: false,
        highlight: true,
        limit: 5,
        misspellings: {below: 5})

我的“ 马丁”结果(您的得分在右边):

Result for "martin"

我的“ 文森特马丁”结果(您的得分在右边):

Result for "vincent martin"

从逻辑上讲,我希望在第二次使用“ vincent martin ”进行搜索时,名为 Vincent Martin 的人得分会更高。但是他是一样的。一个主意吗?

谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用解释选项来调试评分:

<div class="table-responsive">

https://github.com/ankane/searchkick#debugging-queries

答案 1 :(得分:0)

您要确保按相关性排序。

search_results = Subscription.search(
        params[:query], # The search query ("martin" in my example)
        fields: Admin::GlobalSearch.boosts, # An array like ["prénom^3","nom^3.5","email^1.5"]
        operator: "or",
        load: false,
        highlight: true,
        limit: 5,
        misspellings: {below: 5},
        order: { _score: :desc }
)

也可以使用explain: true而不是debug: true来显示结果集和返回的分数。解释将向您显示为什么分数是原来的样子。