簡體   English   中英

按列權重結果對Elasticsearch進行排序,並使用Rails項目的輪胎gem

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM