Elasticsearch提升完全匹配的字段

eqqqjvef  于 2023-03-17  发布在  ElasticSearch
关注(0)|答案(1)|浏览(177)

假设有一个字段有2条记录,值为:
r1:“您好,先生”r2:“你好,保罗先生”
如果我要查询“HELLO MISTER”,是否有任何方法可以根据匹配字段的百分比来提升文档?我知道默认情况下它的得分更高,但我有多个字段具有不同的提升,所以我需要在文档的字段完全匹配时提升文档(或至少基于百分比,例如,在术语匹配50%以上的字段时提升文档)
我试过向所有带有match_phase、match_phase_prefix、terms等的字段添加多个查询,但似乎找不到一种方法来提高完全匹配字段的匹配度,使其超过部分匹配字段的匹配度。

hujrc8aj

hujrc8aj1#

我做了这个例子,也许能帮你入门。

POST idx_test/_doc
{
  "name":"HELLO MISTER"
}

POST idx_test/_doc
{
  "name":"HELLO MISTER PAUL"
}

GET idx_test/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "name": "HELLO MISTER"
          }
        },
        {
          "term": {
            "name.keyword": {
              "value": "HELLO MISTER",
              "boost": 2
            }
          }
        }
      ]
    }
  }
}

回应

"hits" : [
  {
    "_index" : "idx_test",
    "_type" : "_doc",
    "_id" : "XiH664YB1-vHHCnRzwwF",
    "_score" : 0.8630463,
    "_source" : {
      "name" : "HELLO MISTER"
    }
  },
  {
    "_index" : "idx_test",
    "_type" : "_doc",
    "_id" : "JBX664YB3mDFYoZj1MyG",
    "_score" : 0.5753642,
    "_source" : {
      "name" : "HELLO MISTER PAUL"
    }
  }
]

}

相关问题