首页 文章

ElasticSearch:是否可以给出模糊性较低的分数?

提问于
浏览
1

我正在运行multi_match(使用most_fields和“fuzziness”:“AUTO”)查询“Rob”,但我在“Rob”之前得到了“Ron”的结果 .

如果我删除模糊性,它只显示Rob,而不是Ron . 但是,我确实想要使用模糊性,我只是希望所有完全匹配的结果更具相关性并首先显示 . 它没有发生 . 调查'解释',表明'Ron'的IDF略高一些 .

回到我的问题 - 是否可以为模糊元素配置一些“提升”或“得分”?

1 回答

  • 4

    好的,基于这里的建议,我最终得到了以下内容:https://medium.com/@oysterpail/fuzzy-queries-ae47b66b325c#.a4uxw5z0b

    他们的解决方案是使用_198299_ should 查询 . 我不能这样做,因为我需要查询的这一部分是 must (我使用 should 部分进行相关性),并且 must 的bool查询实际上是 AND . 然而, must or 做了诀窍:

    {
       "query":{
          "bool":{
             "must":{
                "or":[
                   {
                      "multi_match":{
                         "query":"rob",
                         "fields":[
                            "username",
                            "firstName",
                            "lastName"
                         ],
                         "type":"most_fields",
                         "fuzziness":"AUTO"
                      }
                   },
                   {
                      "multi_match":{
                         "query":"rob",
                         "fields":[
                            "username",
                            "firstName",
                            "lastName"
                         ],
                         "type":"most_fields"
                      }
                   }
                ]
             }
          }
       }
    }
    

    这样,来自 fuzziness 部分的结果仅与查询的第一部分匹配,而完全匹配结果与两个部分匹配,因此它们首先显示 .

相关问题