首页 文章

如何在elasticsearch中添加模糊搜索查询?

提问于
浏览
1

我正在尝试在跨字段查询中的特定字段上实现模糊性 . 虽然这有点困难 .

所以查询应该:

  • 跨字段匹配短语 .

  • 匹配partNumber和条形码的完全匹配(无模糊)

  • 将模糊术语与 Headers 和副 Headers 匹配 .

到目前为止我的查询是在下面 - 请注意到目前为止,查询中的模糊性根本无法正常工作 .

所以这应该匹配1个结果,即 Headers 中的“Amazing T-Shirt”和副 Headers 中的Blue . (注意拼写错误) .

是否可以在索引映射级别实现模糊性? Headers 和副 Headers 在数据集中非常短 - 可能最多30到40个字符 .

否则,如何在查询中为 Headers 和副 Headers 添加模糊性?

{
  "query": {
    "multi_match": {
        "query": "Bleu Amazing T-Shirt",
        "fuzziness": "auto",
        "operator": "and",
        "fields": [
          "identity.partNumber^4",
          "identity.altIdentifier^4",
          "identity.barcode",
          "identity.mpn",
          "identity.ppn",
          "descriptions.title",
          "descriptions.subtitle"
        ],
        "type": "cross_fields"
      }
  },
  "fields": [
    "identity.partNumber",
    "identity.barcode",
    "identity.ppn",
    "descriptions.title",
    "descriptions.subtitle"
  ]
}

1 回答

  • 0

    好吧,它似乎不支持使用cross_fields模糊搜索,有一些相关的问题 . 因此,我没有使用跨域搜索,而是在索引时将 Headers 和副 Headers 复制到新字段,并将查询拆分为如下所示 . 似乎至少为我的测试用例工作....

    "query": {
          "bool": {
            "should": [
              {
                "multi_match": {
                  "query": "{{searchTerm}}",
                  "operator": "and",
                  "fields": [
                    "identity.partNumber^4",
                    "identity.altIdentifier^4",
                    "identity.barcode",
                    "identity.mpn",
                    "identity.ppn"
                  ],
                  "type": "best_fields"
                }
              },
              {
                "match": {
                  "fuzzyFields": {
                    "query": "{{searchTerm}}",
                    "operator": "and",
                    "fuzziness": "auto"
                  }
                }
              }
            ]
          }
        }
    

相关问题