跨多个字段的模糊性 - 仅在某些字段上使用模糊

时间:2017-07-10 22:32:53

标签: python elasticsearch lucene elasticsearch-plugin

有没有办法只在某些列上使用模糊进行cross_field搜索?例如:

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

所以搜索“John USA”会匹配,搜索“Jon USA”会匹配,但搜索“John AUS”不匹配。怎么会这样做?

1 个答案:

答案 0 :(得分:1)

正如文档中所写和Val在上面的注释中所说,"模糊参数不能与cross_fields类型一起使用"。

根据我的阅读herehere。对于您所描述的问题,我将使用AUTO值作为模糊属性。同样,我会稍微超出一点,并指明“' name'列应该比国家/地区更具相关性,因为您更有可能匹配名称而不是国家/地区(由于您为输入提供的结构)。

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

希望这有帮助!