如果在ElasticSearch中匹配了另一个词,我如何给予更高的分数?

798qvoo8  于 12个月前  发布在  ElasticSearch
关注(0)|答案(1)|浏览(155)

我想实现这样的东西:

{
    should : [
        { term : { title : 'A' } },
        { term : { title : { value : 'B', boost : `100 if the term "A" matches, otherwise 1` } } }
    ]
}

字符串
有可能吗?

ddrv8njm

ddrv8njm1#

第一个term查询应该在keyword类型的字段中使用,对于text字段,最好使用match,您可以在这里找到使用term的解决方案:

{ "query":{
    "bool": {
      "should": [
        {
          "term": {
            "title": {
              "value": "A",
              "boost": 100
            }
          }
        },
        {
          "term": {
            "title": {
              "value": "B",
              "boost": 1
            }
          }
        }
      ]
    }
  }
}

字符串
使用match(推荐):

{ "query":{
    "bool": {
      "should": [
        {
          "match": {
            "title": {
              "query": "A",
              "boost": 100
            }
          }
        },
        {
          "match": {
            "title": {
              "query": "B",
              "boost": 1
            }
          }
        }
      ]
    }
  }
}

相关问题