Ruby on rails 使用tire gem为rails项目按列权重结果排序elasticsearch
我正在尝试对特定模型执行搜索。虽然结果目前是基于最喜欢的排序,我想更多地基于排序块中每个列的百分比 例如: 根据另一列(:页眉)中语义匹配的强度,50%表示“喜欢” 基于“徽章数量”的“徽章数量”为20%Ruby on rails 使用tire gem为rails项目按列权重结果排序elasticsearch,ruby-on-rails,
elasticsearch,tire,Ruby On Rails,
elasticsearch,Tire,我正在尝试对特定模型执行搜索。虽然结果目前是基于最喜欢的排序,我想更多地基于排序块中每个列的百分比 例如: 根据另一列(:页眉)中语义匹配的强度,50%表示“喜欢” 基于“徽章数量”的“徽章数量”为20% 任何帮助都将是巨大的,因为我有点被困在如何扩展块更多,并创建一个迷你算法排序的基础上的重量 使用boost选项为列编制索引。 例: 然后从搜索方法中删除排序。查询结果将自动加权喜欢和徽章数量匹配项 def self.search(params) return [] unless param
任何帮助都将是巨大的,因为我有点被困在如何扩展块更多,并创建一个迷你算法排序的基础上的重量 使用boost选项为列编制索引。 例: 然后从搜索方法中删除排序。查询结果将自动加权喜欢和徽章数量匹配项
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
class YourParticularModel
mapping do
indexes :likes, boost: 100
indexes :badges_count, boost: 40
# .... other indexes
end
end