【发布时间】:2014-10-04 08:11:12
【问题描述】:
我正在使用 elasticsearch 在我的类型中搜索多个数组字段,看起来像
t1 = { field1: ["foo", "bar"],
field2: ["foo", "foo", "foo", "foo"]
field3: ["foo", "foo", "foo", "foo", "foo", "foo"]
}
然后我使用 multi_match 查询来获取匹配项
multi_match: { query: "foo",
fields: "fields*"
}
在计算 t1 的分数时,elasticsearch 将 field1、field2 和 field3 中的查询分数相加,这正是我想要的。但是,它们的贡献不同,field3 对分数的贡献最大,因为“foo”在那里出现了多次。
我现在想通过不将所有数组条目的分数相加来计算每个数组字段中的分数,而只是取它们中的最大值。在我的示例中,包含的所有字段都将具有相同的分数,因为它们都有一个完全匹配。
这个问题已经在elasticsearch forum 上提出过,但目前还没有回答。
【问题讨论】:
-
怎么样,创建一个只有唯一关键字的字段,然后在该字段中搜索?
-
对我来说并不是一个真正的选择,因为实际上,每个 foo 都是一个包含 foo 的完整句子。
标签: elasticsearch scoring