2013-05-03 72 views
0

是否有能力通過思考獅身人面像中的關聯欄來排序搜索結果?思考獅身人面像與鐵軌 - 按協會排列欄

我已經指數定義如下:在控制器中執行

ThinkingSphinx::Index.define :demand, :with => :active_record, :delta => true do 
    indexes client(:name), as: :client, sortable: true 
    has(created_at, updated_at, client_id) 
end 

搜索:

Demand.search(params[:query], order: "#{params[:sort]} #{params[:direction].try(:upcase)}") 

params[order]值是"client.name"params[:direction]要麼"asc""desc"

這裏是由斯芬克斯生成的查詢:

SELECT * FROM `demand_core`, `demand_delta` WHERE MATCH('Test_client @sphinx_internal_class_name (Demand)') AND sphinx_deleted = 0 ORDER BY client.name DESC LIMIT 0, 20 

當我執行搜索,我得到以下錯誤:

ThinkingSphinx::SyntaxError - sphinxql: syntax error, unexpected CONST_FLOAT, expecting $end near '.name DESC LIMIT 0, 20; SHOW META': 

我一直在尋找一段時間的解決方案,但沒能找到。所以問題是如何在我執行搜索後在獅身人面像中應用排序?

回答

1

您需要在排序時使用字段/屬性名稱 - 所以在您的情況下,它應該是client,而不是client.name。希望改變傳遞給控制器​​的params [:sort]值不是太棘手。

+0

耶!這工作,非常感謝。也許你應該擴大你的答案,以便它變得明顯如何解決這個問題。 – RomanKapitonov 2013-05-03 16:45:25