gpt4 book ai didi

elasticsearch - Elasticsearch从各组字段中获得最高分

转载 作者:行者123 更新时间:2023-12-03 00:43:57 25 4
gpt4 key购买 nike

我正在具有多个可能显示名称的字段的文档上进行名称查询。在许多情况下,每个文档节点的名称都是相同的。但是,在某些情况下,可能会有所不同。我想在匹配度最高的字段/节点上对我的查询评分。

因此,假设我将以下文件编入索引。

{
"id" : 1,
{"object1": {"name" : 'Todd Hughes'}},
{"object2": {"name" : 'Todd Hughes'}},
{"object3": {"name" : 'Todd Hughes'}}
}

{
"id" : 2,
{"object1": {"name" : 'Todd Hunt'}},
{"object2": {"name" : 'Todd Hunt'}},
{"object3": {"name" : 'Ken Collins'}}
}

{
"id" : 3,
{"object1": {"name" : 'Todd Huddle'}},
{"object2": {"name" : 'Todd Huddle'}},
{"object3": {"name" : 'Todd Huddle'}}
}

我希望能够搜索“Todd Hunt”并获得“id”为2的第二条记录。我的问题是这些字段被ngrams索引,其他文档#1和#3部分匹配,并且每个对象节点/字段的总和加在一起。所以这对我不起作用。
"bool" : {
"should" : [
{:field : {"object1.name" : "Todd Hunt"}},
{:field : {"object2.name" : "Todd Hunt"}},
{:field : {"object3.name" : "Todd Hunt"}}
],
"minimum_number_should_match" : 1
}

我已经尝试过阅读自定义评分和排名,但我的头在旋转。关于如何构造查询以使每个对象1,对象2或对象3的最高等级是最终分数的任何想法?

最佳答案

您可以使用Dis Max query

A query that generates the union of documents produced by its subqueries, and that scores each document with the maximum score for that document as produced by any subquery, plus a tie breaking increment for any additional matching subqueries



考虑到每个 子查询都是对不同字段的查询,您将获得所需的行为。

您可以选择使用“平局决胜局”为在多个字段中具有匹配项的文档“赋予更多分数”。

关于elasticsearch - Elasticsearch从各组字段中获得最高分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16327439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com