0

我无法弄清楚如何遍历已设置为group_by. 我目前有以下内容:

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

但是,这只会返回每个类别的一条记录。似乎 group 和 count 值是正确的,但我只得到每个类别的第一个 Event,我本来希望它是组中的所有事件。是否可以获得哈希数组或类似数组?此外,如果这是可能的,per_page选项会是每个组吗?

我希望 each_with_group_and_count 迭代这样的东西:

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

1 回答 1

0

恐怕 Sphinx 的分组功能在这方面不起作用——它只返回每个组值的一个文档(在这种情况下,一个事件)。

仅按 category_id 排序可能更合适,并在迭代时跟踪它何时更改(或用于Enumerable#group_by按 category_id 对所有事件进行分组) - 请记住,Sphinx 对结果进行分页,因此您可能需要增加默认页面大小(带:per_page)取决于您如何使用这些结果。

于 2013-04-05T01:01:11.350 回答