За последние 24 часа нас посетили 17698 программистов и 1671 робот. Сейчас ищут 914 программистов ...

Sphinx. Поиск рубрик, в которых встречаются искомые статьи

Тема в разделе "PHP и базы данных", создана пользователем kerranswell, 27 май 2015.

  1. kerranswell

    kerranswell Активный пользователь

    С нами с:
    19 май 2008
    Сообщения:
    16
    Симпатии:
    0
    Пробовал задать вопрос на форуме сфинкса, никто не ответил.
    Проблема вот в чем.
    Мне нужно помимо стандартного поиска по статьям узнать также все рубрики, в которых эти
    статьи встречаются. Так как осуществляется постраничный поиск, я не могу получить полный
    список рубрик из стандартного запроса.

    Грубо говоря:

    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 результатов.
    Буду благодарен за подсказку.
     
  2. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Re: Sphinx. Поиск рубрик, в которых встречаются искомые стат

    так вы отдавайте для статью со всеми рубриками в которых статья участвует.
     
  3. kerranswell

    kerranswell Активный пользователь

    С нами с:
    19 май 2008
    Сообщения:
    16
    Симпатии:
    0
    Re: Sphinx. Поиск рубрик, в которых встречаются искомые стат

    Извините, не понимаю, что вы имеете в виду.
     
  4. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Re: Sphinx. Поиск рубрик, в которых встречаются искомые стат

    Ну вы отдаете ему же статьи в вашем листинге, включите отдельным параметром туда ids который будет у вас содержать все категории в которых присутствует статья. Соответственно когда вам сфинкс отдаст эту запись, то получите в этом поле все категории статьи. что не понятно?
    Сейчас вы скармливаете ему записи

    вида:
    id-статьи, название статьи, текст статьи, 1.

    А будете:
    id-статьи, название статьи, текст статьи, 1, '1,2,10,16,180' AS ids
     
  5. kerranswell

    kerranswell Активный пользователь

    С нами с:
    19 май 2008
    Сообщения:
    16
    Симпатии:
    0
    Re: Sphinx. Поиск рубрик, в которых встречаются искомые стат

    Теперь понял. Но вопрос был не в этом) Мне не нужно знать, в каких еще рубриках одна определенная статья встречается (можно даже предположить для простоты, что статья может быть привязана только к одной рубрике).
    Вот, представьте что при поиске по слову, скажем, "книга" Сфинкс выдает 20 статей. На каждой странице мы выводим по 10 статей. Тогда на первой странице получим первые найденные 10 статей из рубрик 1, 3 и 6, к примеру. Но мы не знаем, к каким рубрикам привязаны статьи с 11 по 20ю. Возможно там будут статьи из рубрик 2 и 9.
    А задача такая, чтобы на первой странице вывести 10 статей и названия рубрик, в которых встречаются статьи со словом "книга". Грубо говоря так:

    Вы искали "книга". Найдено 20 статей в рубриках 1, 2, 3, 6 и 9.
    Статья 1.
    Статья 2.
    ....
    Статья 10.
    <Следующая страница>
     
  6. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Re: Sphinx. Поиск рубрик, в которых встречаются искомые стат

    Тогда запрос к вашему же индексу с SPH_GROUPBY_ATTR тут поможет помоему. группировать как раз по id рубрики и получите уникальные их значения. Результат кешировать.
     
  7. kerranswell

    kerranswell Активный пользователь

    С нами с:
    19 май 2008
    Сообщения:
    16
    Симпатии:
    0
    Re: Sphinx. Поиск рубрик, в которых встречаются искомые стат

    Вот, спасибо! Теперь все получилось)
     
  8. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Re: Sphinx. Поиск рубрик, в которых встречаются искомые стат

    Не за что. Успехов.