2011-12-05 77 views
1

我沒有experience_sphinx的經驗(我爲自己的工作感到自豪)。thinking_sphinx結果順序

我想根據與搜索的相關性以及它們最近的時間對結果進行排序。也許,5倍的相關性,1倍的時間。 (我必須玩這個才能正確)。顯然,如果沒有搜索標準,我希望它按時間排序。

我知道我需要的created_at列添加到搜索模式,但不能作爲指標

報告控制器(我用什麼術語?):

def index 
    @reports = Report.search params[:search] 
    # unknown sorting code here 
end 

報表模型:

define_index do 
    indexes apparatus 
    indexes body 
    indexes comments.body, as => :comment_body 
    ????? created_at 
    end 

回答

1

你會只是做:

define_index do 
    indexes apparatus 
    indexes body 
    indexes comments.body, as => :comment_body 

    has created_at 
end 

使用has你只是表示它需要的任何領域,但不是索引上

對於搜索的排序,你需要閱讀你怎麼認爲你會希望他們加權排序的獅身人面像文檔:

http://freelancing-god.github.com/ts/en/searching.html#sorting

http://freelancing-god.github.com/ts/en/searching.html#fieldweights

Sphinx默認排序基於它是如何相關的認爲結果是給定的輸入。

+0

':sort_mode =>:extended, :order =>「created_at DESC,@relevance DESC」'相關性是否與'DESC'放在最相關的第一個或最後一個? –

+0

如果按「DESC」順序排序,那麼由於它們具有最高的相關性,因此會首先給出最佳匹配。 – iwasrobbed

+0

對......如果我想了半秒多,我會猜到......感謝您的幫助! –