Пробовал задать вопрос на форуме сфинкса, никто не ответил. Проблема вот в чем. Мне нужно помимо стандартного поиска по статьям узнать также все рубрики, в которых эти статьи встречаются. Так как осуществляется постраничный поиск, я не могу получить полный список рубрик из стандартного запроса. Грубо говоря: source articles { sql_query = select a.id, a.title, a.txt, c.id from articles a\ left join cats2arts c2a on c2a.a_id = a.id\ left join cats c on c.id = c2a.c_id } Вопрос: Можно ли как-то организовать сбор всех значений c.id при использовании SetLimits (в php), то бишь при постраничном поиске? Или, как второй вариант, я попытался настроить отдельный индекс, который бы искал только рубрики, но не сами статьи: source articles { sql_query = select a.id, a.title, a.txt, c.id from articles a\ left join cats2arts c2a on c2a.a_id = a.id\ left join cats c on c.id = c2a.c_id GROUP BY c.id } но в таком случае поиск выдает 0 результатов. Буду благодарен за подсказку.
Re: Sphinx. Поиск рубрик, в которых встречаются искомые стат так вы отдавайте для статью со всеми рубриками в которых статья участвует.
Re: Sphinx. Поиск рубрик, в которых встречаются искомые стат Извините, не понимаю, что вы имеете в виду.
Re: Sphinx. Поиск рубрик, в которых встречаются искомые стат Ну вы отдаете ему же статьи в вашем листинге, включите отдельным параметром туда ids который будет у вас содержать все категории в которых присутствует статья. Соответственно когда вам сфинкс отдаст эту запись, то получите в этом поле все категории статьи. что не понятно? Сейчас вы скармливаете ему записи вида: id-статьи, название статьи, текст статьи, 1. А будете: id-статьи, название статьи, текст статьи, 1, '1,2,10,16,180' AS ids
Re: Sphinx. Поиск рубрик, в которых встречаются искомые стат Теперь понял. Но вопрос был не в этом) Мне не нужно знать, в каких еще рубриках одна определенная статья встречается (можно даже предположить для простоты, что статья может быть привязана только к одной рубрике). Вот, представьте что при поиске по слову, скажем, "книга" Сфинкс выдает 20 статей. На каждой странице мы выводим по 10 статей. Тогда на первой странице получим первые найденные 10 статей из рубрик 1, 3 и 6, к примеру. Но мы не знаем, к каким рубрикам привязаны статьи с 11 по 20ю. Возможно там будут статьи из рубрик 2 и 9. А задача такая, чтобы на первой странице вывести 10 статей и названия рубрик, в которых встречаются статьи со словом "книга". Грубо говоря так: Вы искали "книга". Найдено 20 статей в рубриках 1, 2, 3, 6 и 9. Статья 1. Статья 2. .... Статья 10. <Следующая страница>
Re: Sphinx. Поиск рубрик, в которых встречаются искомые стат Тогда запрос к вашему же индексу с SPH_GROUPBY_ATTR тут поможет помоему. группировать как раз по id рубрики и получите уникальные их значения. Результат кешировать.