[英]Sorting elasticsearch by column weight results with tire gem for rails project
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%(:header)基於“ badges_count”為“ badges_count”為20%
任何幫助都將是巨大的,因為我對如何進一步擴展塊並創建按重量排序的迷你算法有些困惑。
使用增強選項索引您的列。 例如:
class YourParticularModel
mapping do
indexes :likes, boost: 100
indexes :badges_count, boost: 40
# .... other indexes
end
end
然后從您的搜索方法中刪除排序。 查詢結果將自動為點贊和badges_count匹配加權。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.