如何在弹性搜索中提高多重匹配的精确匹配

时间:2015-08-05 07:23:02

标签: elasticsearch lucene

我正在运行以下查询以在弹性搜索中提升multi_match的完全匹配。但是,没有得到预期的结果。

我的目标是按顺序提升:" java开发人员" > java AND developer> java OR开发人员

有人可以帮忙解决这个问题吗?需要知道如何在此处为match_phrase提供提升以及如何在match_phrase中添加剩余字段

"query": {
    "bool": {
      "must": [
        {
          "multi_match": {
            "query": "java developer",
            "fields": [
              "title",
              "content",
              "tags",
              "summary"
            ]
          }
        }
      ],
      "should": [
        {
          "match_phrase": {
            "title": "java developer"
          }
        },
        {
          "multi_match": {
            "query": "java developer",
            "fields": [
              "title",
              "content",
              "tags",
              "summary"
            ],
            "operator": "and",
            "boost": 4
          }
        }
      ]
    }
  }

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:15)

这对我有用:

  "query": {
    "bool": {
      "must": [
        {
          "multi_match": {
            "query": "java developer",
            "fields": [
              "title",
              "content",
              "tags",
              "summary"
            ]
          }
        }
      ],
      "should": [
        {
          "multi_match": {
            "query": "java developer",
            "fields": [
              "title",
              "content",
              "tags",
              "summary"
            ],
            "type": "phrase",
            "boost": 10
          }
        },
        {
          "multi_match": {
            "query": "java developer",
            "fields": [
              "title",
              "content",
              "tags",
              "summary"
            ],
            "operator": "and",
            "boost": 4
          }
        }
      ]
    }
  }

答案 1 :(得分:2)

将多重匹配查询的类型设置为Example

"query": {
  {
    "multi_match" : {
      "query":      "java developer",
      "type":       "best_fields",
      "fields":     ["title", "content", "tags", "summary" ]
    }
  }
}