elasticsearch 弹性搜索分数差异,elasticsearch,lucene,elasticsearch,Lucene" /> elasticsearch 弹性搜索分数差异,elasticsearch,lucene,elasticsearch,Lucene" />

elasticsearch 弹性搜索分数差异

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"

我的弹性搜索集群中只有一条记录。它有文本“Foo-Bar”

当我在集群上运行以下查询时,
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以查看您的分数是如何计算的