elasticsearch,tire,Ruby On Rails,elasticsearch,Tire" /> elasticsearch,tire,Ruby On Rails,elasticsearch,Tire" />

Ruby on rails 使用tire gem为rails项目按列权重结果排序elasticsearch

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

我正在尝试对特定模型执行搜索。虽然结果目前是基于最喜欢的排序,我想更多地基于排序块中每个列的百分比

例如:

根据另一列(:页眉)中语义匹配的强度,50%表示“喜欢” 基于“徽章数量”的“徽章数量”为20%


任何帮助都将是巨大的,因为我有点被困在如何扩展块更多,并创建一个迷你算法排序的基础上的重量

使用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