【问题标题】:Elastic search multi_match with field boost具有字段提升的弹性搜索 multi_match
【发布时间】:2021-03-31 23:01:06
【问题描述】:

我有一个 title 和 description 字段。我想在任一字段中找到apple 和banana。但是title 得分更高,即标题中带有apple 和banana 的文档应该比description 中具有相同术语的文档得分更高。

如果两个词条都在两个字段中,那么它们应该有更高的分数(但如果这很难做到,这是可选的)。

我的尝试:

{
  "query": {
    "multi_match" : {
      "query":      "apple banana",
      "type":       "best_fields",
      "fields":     [ "title^2", "description" ],
      "operator":   "and" 
    }
  }
}

但这并没有按预期工作。 还有,title^2和title^3有什么区别吗?

谢谢。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    与在description 字段中具有apple banana 的文档相比,在title 字段中具有apple banana 的文档具有更高的分数

    添加一个包含索引数据、搜索查询和搜索结果的工作示例

    索引数据:

    {
        "title":"apple banana",
        "description":"abc"
    }
    {
        "title":"abc",
        "description":"apple banana"
    }
    

    搜索查询:

    {
      "query": {
        "multi_match" : {
          "query":      "apple banana",
          "type":       "best_fields",
          "fields":     [ "title^2", "description" ],
          "operator":   "and" 
        }
      }
    }
    

    搜索结果:

    "hits": [
          {
            "_index": "66890080",
            "_type": "_doc",
            "_id": "1",
            "_score": 2.589756,
            "_source": {
              "title": "apple banana",
              "description": "abc"
            }
          },
          {
            "_index": "66890080",
            "_type": "_doc",
            "_id": "2",
            "_score": 1.294878,
            "_source": {
              "title": "abc",
              "description": "apple banana"
            }
          }
        ]
    

    另外,title^2和title^3有什么区别

    可以使用^ 提升各个字段。在title^2 中,title 字段的分数将乘以 2,在 title^3 中,分数将乘以 3

    【讨论】:

      猜你喜欢
      • 2012-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-10
      • 1970-01-01
      • 2013-06-06
      • 1970-01-01
      相关资源
      最近更新 更多