У меня возникли проблемы с выяснением того, как выполнить цикл поиска ThinkingSphinx, который был установлен в 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}
]
Это несчастливо. Сортировка по категориям и отслеживание изменений не решают мою проблему, так как я хочу отображать первые 10 результатов для каждой категории. Если в первой категории есть 100 событий, а результаты на странице - 100, мне придется перебирать несколько страниц, чтобы получить нужные мне результаты, что было бы несколько непредсказуемо. Я думаю, что в этом случае лучше всего создавать отдельные запросы для каждой категории. Спасибо за понимание. –