是否有能力通过思考sphinx中的关联列来订购搜索结果?
我的索引定义如下:
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"
以下是sphinx生成的查询:
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':
我一直在寻找解决方案,但找不到一个。所以问题是我在执行搜索后如何在sphinx中应用排序?
答案 0 :(得分:1)
您需要在排序时使用字段/属性名称 - 因此在您的情况下,它应该是client
,而不是client.name
。希望改变params [:sort]值传递给控制器并不是太棘手。