首页 > 解决方案 > 弹性搜索 match_phrase + fuzziness

问题描述

我正在使用 ElasticSearch,我正在尝试实现 match_phrase/string + fuzziness,但似乎不可能(在线示例不多,文档中没有此类案例)。

我需要的是:词组/字符串匹配 + 模糊性 + slop,分别基于字段的每个值。

到目前为止我已经尝试过(我仍然没有我需要的解决方案):

query_string - 它包含模糊性和倾斜性。但是,它通过一个文档通过该字段的所有值收集一个字符串。

match_phrase - 它包含 slop,但没有模糊性。有什么好处 - 它在字段的至少一个值中查找短语匹配,而不是通过文档字段的所有值收集字符串。

我需要的:

任何人都有短语匹配的经验,包括 ElasticSearch 上的模糊性?

提前致谢。

标签: elasticsearchmatch-phrase

解决方案


正如我在问题评论部分的链接中提到的那样,您可以为此使用跨度查询。

您进一步寻找的是一种使用 Span Queries控制模糊性的方法。我从这个SOF 答案中举了一个例子,并重写了查询,因为你想管理模糊性。

询问

POST <your_index_name>
{  
   "query":{  
      "bool":{  
         "must":[  
            {  
               "span_near":{  
                  "clauses":[  
                     {  
                        "span_multi":{  
                           "match":{  
                              "fuzzy":{  
                                 "name":{  
                                    "value":"champions",
                                    "fuzziness":2
                                 }
                              }
                           }
                        }
                     },
                     {  
                        "span_multi":{  
                           "match":{  
                              "fuzzy":{  
                                 "name":{  
                                    "value":"league",
                                    "fuzziness":2
                                 }
                              }
                           }
                        }
                     }
                  ],
                  "slop":0,
                  "in_order":false
               }
            }
         ]
      }
   }
}

希望这可以帮助!


推荐阅读