代码之家  ›  专栏  ›  技术社区  ›  David542

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

  •  0
  • David542  · 技术社区  · 7 年前

    cross_field 仅在某些列上使用模糊搜索?例如:

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

    所以搜索“John USA”会匹配,搜索“Jon USA”会匹配,但搜索“John AUS”不会匹配。这将如何实现?

    1 回复  |  直到 7 年前
        1
  •  1
  •   AlwaysGoingToAsk    7 年前

    正如文件中所述,Val在上述评论中所说,“模糊参数不能与cross_fields类型一起使用”。

    根据我读到的 here here 。对于您描述的问题,我将使用模糊属性的自动值。此外,我只想稍微超越这一点,并指定“名称”栏应该比国家栏更具相关性,因为您更可能匹配名称而不是国家(由于您为输入提供的结构)。

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