首页 文章

elasticsearch best_field和most_field之间的区别是什么

提问于
浏览
6

我已经准备好了这篇文章https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html

但是我自己也搞清楚了 .

让我们有这两个查询:

first

GET blablabla/_search
{
  "query": {
    "multi_match": {
      "query": "games usa",
      "fields": ["title1", "title2"],
      "type": "best_fields"
    }
  }
}

second

get blablabla/_search
{
  "query" : {
    "multi_match": {
      "query": "games usa",
      "fields": ["title1", "title2"],
      "type": "most_fields"
    }
  }
}

我认为第一个查询意味着:

在title1或title2字段中获取包含(游戏)或(美国)或(游戏和美国)单词的文档 .

但是,我不知道第二个是什么意思 .

我可以请求帮助吗?

(我在弹性搜索2.2)

2 回答

  • 1

    无论何时在 Elastic Search 中执行搜索操作,都会计算每个匹配文档的相关性 . 根据文档 -

    每个文档的相关性得分由称为_score的正浮点数表示 . _score越高,文档越相关 .

    根据你上面提到的例子

    GET blablabla/_search
    {
    "query": {
    "multi_match": {
      "query": "games usa",
      "fields": ["title1", "title2"],
      "type": "best_fields"
       }
      }
    }
    

    此查询将在 title1title2 中找到包含 games AND/OR usa 的文档,但 _score 将从 single 最佳匹配字段计算 . 例如-

    • 如果 title1 在同一文档中包含 gamestitle2 包含 games usa ,则 _score 将是 title2 中的 _score .
      当您搜索在同一字段中找到的多个单词时,
    • best_fields 最有用 .

    most_fields

    GET blablabla/_search
    { 
    "query" : {
    "multi_match": {
      "query": "games usa",
      "fields": ["title1", "title2"],
      "type": "most_fields"
       }
      }
    }
    

    此查询将在 title1title2 中找到包含 games AND/OR usa 的文档,但 _score 将从所有字段的组合中计算出来 . 例如-

    • 如果 title1 包含 gamestitle2 包含 games usa 在同一文档中,那么 _score 将是 title1title2 的分数组合

    希望这可以帮助

  • 12

    对于most_fields的一点评论 - 它使用来自两个字段的分数 . 并将其除以字段数

    在你的例子中:(从title2的title1得分得分)/ 2

相关问题