elasticsearch 弹性搜索分数差异
我的弹性搜索集群中只有一条记录。它有文本“Foo-Bar” 当我在集群上运行以下查询时,elasticsearch 弹性搜索分数差异,elasticsearch,lucene,elasticsearch,Lucene,我的弹性搜索集群中只有一条记录。它有文本“Foo-Bar” 当我在集群上运行以下查询时,score显示为0.11506979: { "size" : 100, "query" : { "query_string" : { "query" : "foo bar" } } } 但是,当我在集群上运行以下查询(注意foo条后面的*时,score显示为0.9798734 { "size" : 100, "query"
score
显示为0.11506979
:
{
"size" : 100,
"query" : {
"query_string" : {
"query" : "foo bar"
}
}
}
但是,当我在集群上运行以下查询(注意foo条后面的*时,score
显示为0.9798734
{
"size" : 100,
"query" : {
"query_string" : {
"query" : "foo bar*"
}
}
}
如果我加上*,为什么分数会更高?不是只有一个文档可以匹配吗?如果我添加*,为什么分数会更高? 上面的*匹配具有匹配通配符表达式(未分析)的字段的文档。它匹配任何字符序列(包括空字符序列) 不是只有一个文档可以匹配吗? 这取决于您的索引分析器,以及您如何为给定文档中的字段编制索引。如果您使用的是默认分析器,则ES将使用标准分析器。要准确检查索引数据在ES中的内部存储方式,请执行以下操作 此外,关于实际分数,您应该了解ES用于评分文档的内部机制。将帮助您更好地了解评分机制 如果有任何疑问,请随时提出进一步的问题
感谢您使用*等通配符,评分是使用ConstantCore策略完成的,该策略只考虑boost和QueryForm。因此,分数发生了变化。传递参数explain=true以查看您的分数是如何计算的