繁体   English   中英

elasticsearch按分数排序-可搜索相同字段但分数不同?

[英]elasticsearch sort by score - same field searchable but score different?

我正在尝试按2个字段对ES结果进行排序:可搜索和年份。

我的Rails应用中的映射:

# mapping
  def as_indexed_json(options={}) 
    as_json(only: [:id, :searchable, :year]) 
  end 

  settings index: { number_of_shards: 5, number_of_replicas: 1 } do
    mapping do
      indexes :id, index: :not_analyzed
      indexes :searchable
      indexes :year
    end
  end

查询:

 @records = Wine.search(query: {match: {searchable: {query:params[:search], fuzziness:2, prefix_length:1}}}, sort: {_score: {order: :desc}, year: {order: :desc}}, size:100)

查询中有趣的事情:

sort: {_score: {order: :desc}, year: {order: :desc}}

我认为该查询与2种参数配合得很好。 我的问题是,具有相同名称(可搜索字段)的2个文档的得分不同。

例如,我正在搜索“酒厂”:

在此处输入图片说明

即使可搜索字段相同,也会看到非常不同的分数。 我认为问题是由于ID字段(实际上是UUID)造成的。 看起来此ID字段会影响得分。 但是在我的架构映射中,我写道不应对ID进行分析,并且在我的ES查询中,我要求仅在“可搜索”字段中进行搜索,而不是在ID中进行搜索。

我在数学上错过了相同领域相同分数的东西吗? (实际上,按得分后的年份排序是没有用的,因为相同字段的cos得分不同)

分数是不同的,因为它们是针对每个分片独立计算的。 有关更多信息, 请参见此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM