我已经准备好了这篇文章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 回答
无论何时在
Elastic Search
中执行搜索操作,都会计算每个匹配文档的相关性 . 根据文档 -根据你上面提到的例子
此查询将在
title1
或title2
中找到包含games
AND/ORusa
的文档,但_score
将从 single 最佳匹配字段计算 . 例如-title1
在同一文档中包含games
和title2
包含games usa
,则_score
将是title2
中的_score
.当您搜索在同一字段中找到的多个单词时,
best_fields
最有用 .在
most_fields
:此查询将在
title1
或title2
中找到包含games
AND/ORusa
的文档,但_score
将从所有字段的组合中计算出来 . 例如-title1
包含games
且title2
包含games usa
在同一文档中,那么_score
将是title1
和title2
的分数组合希望这可以帮助
对于most_fields的一点评论 - 它使用来自两个字段的分数 . 并将其除以字段数
在你的例子中:(从title2的title1得分得分)/ 2