elasticsearch - 查询匹配模式标记器

标签 elasticsearch elasticsearch-5

假设我们有一个搜索查询吸尘器WSP 6666 C 22 C 2 KW橡胶,我们希望将其与索引匹配。被索引的产品有:

...
"categories": [
    "Vacuum cleaner",
    "Blender",
],
"modelnumbers": [
    "WSP 6666 C 22 C 2 KW",
    "ABST 23",
    "2h28f7h2i3f",
]

现在我想在两个类别上都匹配为型号
{
  "query": {
      "function_score": {
        "query": {
          "bool": {
            "should": [
              {
                "query_string": {
                  "query": "Vacuum cleaner WSP 6666 C 22 C 2 KW rubber",
                  "default_operator": "OR",
                  "default_field": "categories",
                  "boost": "10"
                }
              },
              {
                "query_string": {
                  "query": "Vacuum cleaner WSP 6666 C 22 C 2 KW rubber",
                  "default_operator": "OR",
                  "default_field": "modelnumbers",
                  "boost": "10"
                }
              }
          }
     }
}

这显示了正确的结果。但是,现在它在以下所有条件上均匹配:
  • 真空
  • 清洁剂
  • WSP
  • 666666
  • C
  • 22
  • C
  • 2
  • KW

  • token 生成器是否有可能仅找到匹配项的方法?:
  • 吸尘器
  • WSP 6666 C 22 C 2 KW

  • 如您所见,并非所有的正则表达式都具有相同的格式,因此无法使用正则表达式标记程序。

    最佳答案

    处理此问题的正确方法是使用(edge-)ngram索引数据。但是在执行此操作之前,您可能想要尝试使用与您关心的字段匹配的multi_match查询:

    {
      "query": {
        "multi_match": {
          "query": "Vacuum cleaner WSP 6666 C 22 C 2 KW rubber",
          "fields": [
            "categories",
            "modelnumbers"
          ]
        }
      }
    }
    

    关于elasticsearch - 查询匹配模式标记器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48666627/

    相关文章:

    elasticsearch - 面向单词的完成建议器 (ElasticSearch 5.x)

    sorting - ElasticSearch-排序不起作用

    elasticsearch - 查询以找到给定小时范围内的平均条目数

    elasticsearch - 部分匹配在此查询中不起作用

    elasticsearch - Cluster Red - 索引中未分配的分片

    elasticsearch - Elasticsearch自定义查询以获取特定范围的元素?

    elasticsearch - Elasticsearch中的快速关键词提取

    elasticsearch - 如何远程访问elasticsearch 5?

    elasticsearch - 从Kibana中的单个查询绘制多行

    php - Elasticsearch 不确定我是否需要使用 bool 查询