gpt4 book ai didi

ruby-on-rails - 将多个 Thinking Sphinx 查询的结果组合成单个分页结果

转载 作者:行者123 更新时间:2023-12-04 19:16:28 25 4
gpt4 key购买 nike

有没有一种简单的方法可以将多个 Thinking Sphinx 搜索的结果组合成一个结果?所有这些搜索都在同一模型上,但搜索具有不同的搜索词。我想要做的是组合结果,以便它们都可以按日期列排序并获得正确的分页。

假设我有一个 Thinker 类(class)和一个 Idea 类(class)。

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', :order => :created_at, :sort_mode => :desc

...并以某种方式将它们组合起来,以便将 Bob(煎饼)和 Alice(华夫饼)的想法集合混合在一起,按 created_at 降序排序,并由 Thinking Sphinx 正确分页。在实际用例中,我可以以这种方式组合 2 到 15 次搜索。

我知道搜索方法返回一个 ThinkingSphinx::Search < Array。我想过手动将这些对象拼接在一起,但我正在寻找排序和分页的事实使这有点棘手。

在 Thinking Sphinx 中是否有一种优雅的方法可以做到这一点,或者我是否没有遗漏任何东西并且我几乎必须自己动手?

最佳答案

Thinking Sphinx 与 Kaminari 合作。
所以你的 gemfile 中已经有了 kaminari。你只需要做:

result = bob.ideas.search 'pancakes', :order => :created_at, :sort_mode => :desc
result += alice.ideas.search 'waffles', :order => :created_at, :sort_mode => :desc

结果不再是 ThinkingSphinx::Search。这是一个数组
result = Kaminari.paginate_array(result)

您可以对结果使用分页和简单排序

关于ruby-on-rails - 将多个 Thinking Sphinx 查询的结果组合成单个分页结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8922362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com