如何在ThinkingSphinx中迭代分组结果?

时间:2013-04-03 22:46:43

标签: ruby-on-rails ruby thinking-sphinx

我无法弄清楚如何循环设置为group_by的ThinkingSphinx搜索结果。我目前有以下内容:

search = Event.search(
  {
    group_by: 'category_id', 
    group_function: :attr
  }
)
search.each_with_groupby_and_count do |event, group, count|
  puts [event, group, count].join(' - ')
end

但是,每个类别只返回一条记录。看起来组和计数值是正确的,但我只得到每个类别的第一个事件,我希望它是组中的所有事件。是否有可能获得一系列哈希或类似?此外,如果可以,per_page选项是否按群组?

我希望each_with_group_and_count迭代这样的事情:

[
   {group: 1, hits: [Event1, Event2], count: 2},
   {group: 2: hits: [Event3], count: 1}
]

1 个答案:

答案 0 :(得分:0)

我担心Sphinx的分组功能在这个问题上不起作用 - 它只返回每个组值的一个文档(在这种情况下,一个事件)。

通过category_id进行排序可能更合适,并在迭代时跟踪它的变化(或使用Enumerable#group_by按category_id对所有事件进行分组) - 请记住,Sphinx会对结果进行分页,因此您可能希望增加默认页面大小(使用:per_page),具体取决于您使用这些结果的方式。