【问题标题】:Sorting elasticsearch by column weight results with tire gem for rails project使用rails项目的轮胎宝石按列权重结果对elasticsearch进行排序
【发布时间】:2014-06-30 17:24:09
【问题描述】:
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%

任何帮助都会很棒,因为我对如何更多地扩展块并创建一个基于重量排序的迷你算法有点困惑。

【问题讨论】:

    标签: ruby-on-rails elasticsearch tire


    【解决方案1】:

    使用提升选项索引您的列。 例如:

    class YourParticularModel
      mapping do
        indexes :likes,           boost: 100
        indexes :badges_count,    boost: 40
        # .... other indexes
      end
    end
    

    然后从您的搜索方法中删除排序。查询结果将自动加权 likes 和 badges_count 匹配项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-24
      • 1970-01-01
      • 2013-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      相关资源
      最近更新 更多