有没有一种方法可以仅对某些列使用模糊性进行cross_field搜索?例如:

match against:
- name (fuzziness=1)
- country (fuzziness=0)

因此,搜索“John USA”将匹配,搜索“Jon USA”将匹配,但搜索“John AUS”将不匹配。怎么做?

最佳答案

正如文档中所写,Val在上面的评论中说:“模糊性参数不能与cross_fields类型一起使用”。

根据我所读的herehere。对于您描述的问题,我会将AUTO值用于模糊属性。同样,我会进一步说明这一点,并指定“名称”列应比国家/地区列更具相关性,因为您更可能匹配名称而不是国家/地区(由于您为自己显示的结构)输入)。

{
   "size": 100,
   "query": {
      "multi_match": {
         "query": "John Doe USA",
         "fields": [
            "name^3",
            "country"
         ],
         "fuzziness": "AUTO",
         "max_expansions": 50,
         "prefix_length": 0
      }
   }
}

希望这可以帮助!

10-05 22:43
查看更多