假设我有一个包含三个字段的文档:name
,company
,email
,每个字段都Map到edge-ngram
{
"name": "John",
"company": "John's company",
"email": "[email protected]"
}
字符串
当搜索“约翰”,我希望能够得到每个领域的得分分别
{
"query": {
"bool": {
"should": [
{ "match": { "name": "john" }},
{ "match": { "company": "john" }},
{ "match": { "email": "john" }}
]
}
}
}
型
在这个例子中,每个match
子句的得分加在一起,然后除以match
子句的数量。那么,无论如何都要获得每个match
子句的得分,而不仅仅是整个文档的最终得分?
我认为设置**“explain”:true**也不理想,因为它提供了非常低级的评分细节(效率低下且难以解析)。
2条答案
按热度按时间fcwjkofz1#
我想不出一种方法,你可以做到这一点,而不修改搜索结果。
但是,如果你对每个字段使用不同的提升,你可能会反过来确定每个字段的值。例如,将一个字段提升1,下一个字段提升10,最后一个字段提升100,然后检查最后的数字可能会给予你想要的,但是,被提升100的字段将是唯一重要的。
好奇的应用程序,因为它似乎提高一般可能解决你正在寻找什么。
fdx2calv2#
Elasticsearch最近增加了在#94564中返回命名查询得分的功能
我们可以使用命名查询来跟踪哪些查询匹配返回的文档,并通过设置名为
include_named_queries_score
的请求参数来返回每个命名查询的分数,该参数控制是否返回与匹配查询相关联的分数。最后的查询看起来像这样:
字符串