【问题标题】:Searchkick - score with multiple fields matchingSearchkick - 与多个字段匹配的分数
【发布时间】:2019-01-04 08:51:44
【问题描述】:

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

我的搜索方法:

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})

我对“martin”的结果(你的分数在右边):

我对“vincent martin”的结果(你的分数在右边):

从逻辑上讲,我希望在第二次搜索“vincent martin”时,名为 Vincent Martin 的人的得分更高。但他是一样的。一个想法?

谢谢

【问题讨论】:

    标签: ruby-on-rails elasticsearch searchkick


    【解决方案1】:

    您可以使用说明选项来调试评分:

    Subscription.search(params[:query], explain: true, ...).response
    

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

    【讨论】:

    • 谢谢,但它有点难以消化...我可以看到 boost 和运算符 。但我不知道怎样才能做得更好。
    【解决方案2】:

    您希望确保按相关性排序。

    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 它将向您显示结果集和返回的分数。解释会告诉你为什么分数是这样的。

    【讨论】:

      猜你喜欢
      • 2019-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-01
      相关资源
      最近更新 更多