我无法弄清楚如何循环设置为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}
]
答案 0 :(得分:0)
我担心Sphinx的分组功能在这个问题上不起作用 - 它只返回每个组值的一个文档(在这种情况下,一个事件)。
通过category_id进行排序可能更合适,并在迭代时跟踪它的变化(或使用Enumerable#group_by
按category_id对所有事件进行分组) - 请记住,Sphinx会对结果进行分页,因此您可能希望增加默认页面大小(使用:per_page
),具体取决于您使用这些结果的方式。