@leetnigga

Как сделать поиск в Sphinx с учетом кучи аттрибутов?

Здравствуйте.

Есть MySQL база на несколько миллионов строк.

Основная таблица в ней выглядит как:
ID | Text | ... десяток полей-флагов ...

К ней могут (в зависимости от галочек в форме поискового запроса) джоиниться ещё несколько таблиц вида table (ID | Parent_ID | Data).

На сейчас типичный запрос выглядит так:
SELECT * FROM table
JOIN child_table on (table.ID = child_table.Parent_ID)
JOIN child_table2 on (table.ID = child_table2.Parent_ID)
...
WHERE 
table.Flag1 = '...' 
AND table.Flag2 = '...' 
AND child_table.Data = '...' 
AND child_table2.Data = '...'


Иногда кроме этих полей-флагов необходимо искать по полю Text в таблице:
SELECT * FROM table
JOIN child_table on (table.ID = child_table.Parent_ID)
JOIN child_table2 on (table.ID = child_table2.Parent_ID)
...
WHERE 
table.Flag1 = '...' 
AND table.Flag2 = '...' 
AND child_table.Data = '...' 
AND child_table2.Data = '...' 
AND MATCH(table.Text) AGAINST ('....')


Естественно, на таких объемах полнотекстовый поиск от mysql дичайше тормозит. Чтобы избавиться от тормозов, я решил воспользоваться Сфинксом, но столкнулся с проблемой: как в нём правильно выстроить индекс?

То есть:
- должен ли я все эти флаги (в т.ч. из дочерних таблиц) загонять в индекс Сфинкса (через rt_attr_uint, например), и искать все данные именно в нём, или
- я фильтрую в MySQL только по флагам = получаю список айдишников, потом фильтрую в Сфинксе только по тексту = получаю другой список, потом нахожу пересечение этих списков = мой результат, или
- какой-то другой вариант?
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
opium
@opium
Просто люблю качественно работать
Все загнать в сфинкс
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
402d
@402d
Программирую с 1989 года
В сфинксе есть мульти атрибуты. Но если не понравиться то можно деноомализовать сделав текстовое поле куда их собрать.
Priz99998k Priz33334k.
ПрефиксИдСуфикс пробел и тд
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Badoo Development Москва
от 140 000 до 180 000 руб.
Badoo Development Москва
от 180 000 до 250 000 руб.
от 90 000 до 150 000 руб.
14 авг. 2018, в 16:33
1000 руб./за проект
14 авг. 2018, в 16:15
6000 руб./за проект
14 авг. 2018, в 16:12
500 руб./за проект