2013-12-17 21 views
0
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%偉大的,因爲我有點卡住如何擴大塊更多,並創建一個微型算法來按重量排序。

回答

0

用提升選項索引你的列。 例如:

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

然後從你的搜索方法刪除排序。查詢結果將會自動加載likes和badge_count匹配項。

相關問題