查询"best fields"弹性搜索分数无法按预期工作



试图了解排名是如何运作的。我的索引在所有字段上都使用"英语"分析器定义。

这是我的查询:

GET test_index_1/study/_search/
{ 
"query": {
"multi_match" : {
"query": "stupid question", 
"type": "best_fields",
"fields": ["description", "title",   "questions.text" ]
}
}

}

以下是返回的结果。我的测试索引中只有 3 个文档。

我想知道为什么第一份文件的分数是第二份文件的两倍。

直观地说,"标题"和"描述"字段是"相等的":为什么"标题"中的匹配会产生更高的分数?

"hits": {
"total": 3,
"max_score": 1.7600523,
"hits": [
{
"_index": "test_index_1",
"_type": "study",
"_id": "AV28gnhD1DC3_uN8bTrd",
"_score": 1.7600523,
"_source": {
"title": "stupid question",
"description": "test test",
"questions": [
{
"text": "stupid text"
}
]
}
},
{
"_index": "test_index_1",
"_type": "study",
"_id": "AV28gomD1DC3_uN8bTre",
"_score": 0.84339964,
"_source": {
"title": "test test",
"description": "stupid question",
"questions": [
{
"text": "stupid text"
}
]
}
},
{
"_index": "test_index_1",
"_type": "study",
"_id": "AV28gpPT1DC3_uN8bTrf",
"_score": 0.84339964,
"_source": {
"title": "test test",
"description": "stupid question",
"questions": [
{
"text": "no text"
}
]
}
}
]

提前感谢您的任何提示。

Elasticsearch 使用的是倒排索引和 tfidf。因此,更加重视在所有文档中出现较少的单词。单词"愚蠢"和"问题"在所有标题中只出现一次(仅在第一个结果中(,但它们在所有描述中出现两次(在第二个和第三个结果中(,因此标题中的"愚蠢问题"更有价值,因为它出现较少。这就是为什么第一份文件中的分数更大的原因。

相关内容

  • 没有找到相关文章

最新更新