Долгий поиск

Аватар пользователя dimm2

Всем привет! Проблема с поиском. Мускуль грузит проц на 100 процентов. При этом еще и поиск осуществляется очень долго (больше минуты по 50 000 нодам, каждая нода по 100 слов). Все поля, используемые в поиске проиндексированы.

В качестве фильтра используется две группы критериев. В первой группе критерии объединяются через AND. Во второй группе находится один групповой критерий с двумя возможными значениями, которые объединены через OR.

И вот, например, поиск в БД по шарообразным фруктам/овощам (тип):

Группа 1 (AND)
Диаметр
Цвет
Вес

AND

Группа 2 (OR)
Тип

Так вот если в поисковом фильтре не использовать критерий из второй группы, то страница отрисовывается за секунду. А если использовать, то по минуте висит.

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

Модули и темы:
Ключевые слова:
Версия Drupal:
0 Спасибо

Комментарии

Аватар пользователя gun_dose
gun_dose 1 год назад

Начните с описания проблемы. Чем ищете? Фасетами или раскрытыми фильтрами? Апач солр стоит?

0 Спасибо
Аватар пользователя dimm2
dimm2 1 год назад

Раскрытыми фильтрами.
Апач солр не стоит, оперативы не хватает. На будущее в планах :-)

0 Спасибо
Аватар пользователя gun_dose
gun_dose 1 год назад

Можно и без солра просто Search API + Facet API уже сами по себе дают огромный прирост производительности по сравнению с раскрытыми фильтрами

0 Спасибо
Аватар пользователя dashiwa
dashiwa 1 год назад

hook_query_alter()

0 Спасибо
Аватар пользователя dimm2
dimm2 1 год назад

Решил изменением типа данных для поля "Тип". Фактически там int, а поле было создано как text. Перестройка индекса с новыми настройками дала более чем десятикратный прирост скорости. Загрузка ЦП исчезла, время поиска не отличается при различных комбинациях фильтров.

0 Спасибо