我有一个要求,我想根据传递给 sphinx 的 ID 顺序获得结果:
我用 ruby 进行了排序和过滤,然后找到了 user_ids 的顺序
user_ids = [1, 3, 2]
现在,我想在此之上应用搜索:
User.search_for_ids("Test", {:with => {:page => params[:page], :per_page => 25, :sphinx_internal_id => user_ids}, :sql => {:order => "field(id,#{user_ids.join(',')})"}})
我看到当我们需要对 sql 进行排序时,我们可以在选项中传递 :sql => :order 。但这并没有按照预期的排序顺序给我结果。
User.where(:id => [1, 2, 3]).order("field(id,#{user_ids.join(',')})")
给了我预期的正确结果
如果我在这里做错了什么,请纠正我。有没有办法保留关于 user_ids 的订单?任何帮助深表感谢。