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

Vis*_*rma 14 lucene elasticsearch

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

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

有人可以帮忙解决这个问题吗?需要知道如何在此处为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
          }
        }
      ]
    }
  }
Run Code Online (Sandbox Code Playgroud)

非常感谢你的帮助.

Vis*_*rma 16

这对我有用:

  "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
          }
        }
      ]
    }
  }
Run Code Online (Sandbox Code Playgroud)