Циклическая сортировка в сфинксе внутри групп

Koc

Новичок
Есть индекс в сфинксе, там товары компаний. Мы выбираем по куче фильтров их и на выходе у нас 3 товара от одной фирмы А, 3 товара от Б и 2 товара от С. Фирма Б круче А. Степень крутости А и С одинаковая. Нам нужно так выводить товары:

Б1
Б2
Б3
А1
С1
А2
С2
А3

то есть сначала товары крутых фирм, а потом остальных. Но не подряд от одной фирмы, а вперемешку от разных по одному товару. Результатов в выдаче где-то по 5 тысяч
у меня тут решение - выбрать это все в пхп, тут преобразовать и загнать в редис минут на 10, где ключ - md5(serialize($filters))

если б без пагинации - без особых проблем через group N by company_id можно реализовать
 
Последнее редактирование:

fixxxer

К.О.
Партнер клуба
Можно попробовать нахачить вокруг OPTION ranker=expr()
 

Koc

Новичок
ага, тоже про экспрешн думал, но не знаю как формулу составить. +Там он в основном для полнотекстового поиска а у меня по атрибутам.
 

artoodetoo

великий и ужасный
Koc, у тебя вопрос только по временному хранению результатов или по способу сортировки товар + рейтинг(фирма) тоже? Неочевидно как-то.
 

Koc

Новичок
вопрос по способу сортировки на уровне сфинкса. Может все-таки что-то реально там сделать.

А так мы уже начали делать сортировку на уровне php + хранение в redis sorted sets на некоторый интервал времени.

PS эту тему я создал чуть раньше, чем в скайпе начали обсуждать.
 
Сверху