Задать вопрос

Как искать в Sphinx по разным таблицам с разными полями?

Есть разные таблицы с разными наборами полей. Создал источники (source) и индексы (index) для всех. Связей между таблицами нет. Использую PHP API. Позволяет ли sphinx искать одновременно по этим таблицам? Могут ли id в таблицах пересекаться (в каждой таблице есть id autoincrement primary key от 1 и выше)? Или единственный вариант — делать несколько запросов (по запросу на каждый индекс)?
  • Вопрос задан
  • 5751 просмотр
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
Я делаю специальную таблицу для поиска с примерными полями:
id | table_name | external_id | search_data…
Ответ написан
Да, можно. Раньше было так, как сейчас — не знаю.
Внимание, говнокод!
В конфиге, в каждом source —
sql_attr_uint = tab

В запросе что-то типа:
1 as tab

(говно, но, вроде, только так) Число — идентификатор таблицы.
На какойт конференции спрашивал у Аксенова — лучшего варианта не предложил.

Ищем по нескольким индексам. Для каждого вхождения идентификатор таблицы будет в ['attrs']['tab'].
Id пересекаться могут, но будет выдаваться только одно, остальные игнорируются.
Ответ написан
Комментировать
@betal
Со сфинксом сильно не разбирался. Могу предложить простенький костыль с использованием union select, тогда source будет один для двух таблиц или из той же оперы делать представление, что тоже костляво.
Ответ написан
Комментировать
tipalchuk
@tipalchuk
Тоже возникал такой же вопрос, вот что помогло
Поиск в Sphinx по разным таблицам
Если тема еще актуальна
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы