gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 01:56:08 29 4
gpt4 key购买 nike

我正在尝试按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个文档的得分不同。

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

enter image description here

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

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

最佳答案

分数是不同的,因为它们是针对每个分片独立计算的。 See here了解更多信息。

关于ruby-on-rails - elasticsearch按分数排序-可搜索相同字段但分数不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36544345/

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