def self.search(params)
return [] unless params[:query].present?
tire.search(load: true) do
query { string(params[:query], fields: %w(title description topics
username discussions)) }
sort do
by "likes", "desc"
by "badges_count", "desc"
end
facet :tags do
terms :tags
end
facet :topics do
terms :topics
end
size params[:size] || 5
end.results
end
我正在尝试对特定型号进行搜索。虽然结果目前正在根据最喜欢的方式进行排序,但我希望以排序块中每列的百分比为基础进行排序。
例如:
基于另一列(:标题)中语义匹配强度的“喜欢”50% 基于“badges_count”的“badges_count”为20%
任何帮助都会很棒,因为我有点不知道如何更多地扩展块并创建一个基于重量排序的迷你算法。
答案 0 :(得分:0)
使用提升选项为列编制索引。 例如:
class YourParticularModel
mapping do
indexes :likes, boost: 100
indexes :badges_count, boost: 40
# .... other indexes
end
end
然后从搜索方法中删除排序。查询结果将自动加权喜欢和badges_count匹配。