ruby-on-rails – 将多个Thinking Sphinx查询的结果合并到一个分
发布时间:2020-12-17 03:13:51 所属栏目:百科 来源:网络整理
导读:有没有一种简单的方法可以将多个Thinking Sphinx搜索结果合并到一个结果中?所有这些搜索都在同一个模型上,但搜索具有不同的搜索字词.我要做的是组合结果,以便它们都可以按日期列进行排序并获得适当的分页. 假设我有一个Thinker类和一个Idea类. class Thinke
有没有一种简单的方法可以将多个Thinking Sphinx搜索结果合并到一个结果中?所有这些搜索都在同一个模型上,但搜索具有不同的搜索字词.我要做的是组合结果,以便它们都可以按日期列进行排序并获得适当的分页.
假设我有一个Thinker类和一个Idea类. class Thinker < ActiveRecord::Base has_many :ideas end class Idea < ActiveRecord::Base belongs_to :thinker define_index do indexes text has created_at end end 并说我有两个思想家,鲍勃和爱丽丝.我想结合以下搜索: bob.ideas.search 'pancakes',:order => :created_at,:sort_mode => :desc alice.ideas.search 'waffles',:sort_mode => :desc ……并以某种方式将它们组合在一起,以便将Bob的(煎饼)和Alice的(华夫饼干)想法的集合混合在一起,按降序created_at排序,并由Thinking Sphinx正确分页.在实际使用案例中,我可以在2到15次搜索之间以这种方式组合. 我知道搜索方法返回一个ThinkingSphinx :: Search<阵列.我想过手动将这些对象拼接在一起,但事实上我正在寻找排序和分页这使得这有点棘手. 在Thinking Sphinx中有没有一种优雅的方法可以做到这一点,或者我没有遗漏任何东西,我几乎不得不自己动手? 解决方法
思考狮身人面像与Kaminari合作.
所以你已经在你的gemfile中拥有了kaminari.你只需要这样做: result = bob.ideas.search 'pancakes',:sort_mode => :desc result += alice.ideas.search 'waffles',:sort_mode => :desc 结果不再是ThinkingSphinx :: Search.这是一个阵列 result = Kaminari.paginate_array(result) 你可以使用分页和简单的排序结果 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |