我们目前正在使用Elasticsearch 6.6,但在match_phrase和计算出的分数方面遇到了麻烦。
设置是什么
目前,相似性设置是
"scripted_wc": {
"type": "scripted",
"script": {
"source": "return doc.freq;"
}
}
我们想要拥有什么
例如,我们有3个文档:
"bbb aaa aaa bbb aaa"
"aaa ccc aaa bbb"
"ccc aaa aaa bbb aaa"
查询类似于:
GET _search/
{
"explain": true,
"query": {
"match_phrase": {
"myfield": "ccc aaa"
}
}
}
当我们查询"aaa"
时,得分分别为3、2和3。这是正确的。但是,如果我们搜索"ccc aaa"
,我们将得到0、2、2的分数。我们的期望是得到0、1、1。当启用explain时,我们看到对于每个添加的单词,它都会创建一种子查询,返回1,但求和。因此,“ ccc aaa aaa”返回0、0、3而不是0、0、1。
“ bbb aaa”应该为每个文档返回2,0,1(当然不会返回0)。在这里,您可以看到说明输出:https://pastebin.com/jHPnTLEV
这是错误还是我们的理解是错误的?我们如何实现这一目标?
感谢您的帮助