Модернизация доски объявлений

AntonyZZZ

Новичок
Передали доску объявлений. Yii 1 + MySQL 5.5. 1400 категорий товаров/услуг с разными атрибутами. Атрибуты сделаны через EAV (одна текстовая колонка). Требуется: сделать нормальный поиск с фильтрами (фасетами) + по тексту, так как имеющийся вообще никуда не годится (только по тексту без фильтрации по категориям!!!) и работает очень плохо (х.з. о чем думали предыдущие разрабы). Куда смотреть? Первая мысль - прикрутить сфинкс. Инфа меняется часто, нужны будут RT индексы тогда. Вторая мысль - что-то делать со строковым EAV - STI не подходит, Class Table Inheritance - 1400 таблиц - кажется слишком много... Коллеги, подскажите куда смотреть.
 

AntonyZZZ

Новичок
А текстовый EAV лучше оставить или добавить еще колонок на разные форматы (int, date, float)? Фильтр по диапазону чисел сделан с преобразованием типов на стороне базы, то бишь с фулсканом...
 

fixxxer

К.О.
Партнер клуба
Если ты выбросишь все эти фильтры и будешь искать в sphinx/elastic, в принципе, можно обойтись и маппингом при заливке данных в искалку.
 

AntonyZZZ

Новичок
Под маппингом при заливке данных в индекс имеется ввиду частичное/полное развертывание EAV структуры в плоскую таблицу? Я правильно понимаю? А иначе как положить EAV на индекс сфинкса, ведь JOIN между индексами делать нельзя.
 

AntonyZZZ

Новичок
Кстати, сейчас просмотрел количество уникальных атрибутов для EAV в базе проекта - их всего 174. Может тут лучше STI применить? Сделать одну большую плоскую таблицу. Будет около 200 колонок. Она на сфинкс хорошо ляжет. В InnoDB ограничение 1000 колонок, так что запас большой.
 

fixxxer

К.О.
Партнер клуба
Под маппингом при заливке данных в индекс имеется ввиду частичное/полное развертывание EAV структуры в плоскую таблицу?
да. Намного проще не пытаться изобразить это все одним sql-запросом, а генерировать xmlpipe2. В нем можно и структуру индекса передавать.
Кстати, сейчас просмотрел количество уникальных атрибутов для EAV в базе проекта - их всего 174. Может тут лучше STI применить?
ну не знаю, это какой-то ад в обслуживании будет, мне кажется, при отсутствии весомых преимуществ. Но можно попробовать.
 

AntonyZZZ

Новичок
Я уже и сам пришел к xmlpipe2. Очень удобно оказалось и быстро. Развернул eav атрибуты в плоскую таблицу. Довольно быстро получилось. А если схема поменяется в дельте, сфинкс это переварит, добавит новый атрибут?
 
Сверху