Ускорение поиска

Установка, ошибки при работе с модулями, интеграции и прочее
rodger-bober
Сообщения: 4
Зарегистрирован: 29.09.2024
Поблагодарил: 2 раз
Спасибо: 1 раз

Ускорение поиска

Непрочитанное сообщение rodger-bober »

Добрый день, интересует как можно ускорить работу поиска по товару а то долго работает, пробовал переключать режим кэширования с file на memcached,
страницы ощутимо с мемкечедом медленней работали.
Есть какие то  решения, связка nginx+php-fpm, товаров около 80к на сайте
Аватара пользователя
DEVAGENCY
Разработчик дополнений
Сообщения: 52
Зарегистрирован: 03.04.2022
Откуда: Moscow
Мои дополнения: devagency
Поблагодарил: 13 раз
Спасибо: 7 раз
Контактная информация:

Re: Ускорение поиска

Непрочитанное сообщение DEVAGENCY »

Здесь больше вопросы в сторону базы данных.
Так же зависит от самого модуля поиска которым пользуетесь.
Сказать "Спасибо" - деньги пойдут на развитие форума Liveopencart!
Телеграм — @devagency
Аватара пользователя
100napb
Сообщения: 20
Зарегистрирован: 15.04.2022
Поблагодарил: 4 раз
Спасибо: 6 раз

Re: Ускорение поиска

Непрочитанное сообщение 100napb »

подавляющее большинство готовых решений\модулей для опенкарта используют под капотом обычные select .. where ... like "%%" запросы к таблицам опенкарта. Потому, что бы ускорить подобные запросы, чаще всего достаточно просто добавить индексы в нужные таблицы бд через тот же phpmyadmin. Например, у вас медленно работает поиск по артикулу товара; артикул товара находится в поле model таблицы oc_product. Аналогично, нужно убедиться, что для прочих sku, ean и тд индексы то же есть, если они используются. И в самых простых случаях это поможет.

Другое дело, что такие запросы неспособны учесть опечатки или морфологию (по запросу "синий" не найдётся "синие", например), да и работают, мягко скажем, не быстро, особенно - когда речь идет о поиске по части слова (в некоторых случаях mysql не может использовать индекс) или когда товаров просто много - для живого поиска на сайте весьма критично.

Существуют частные разработки на базе движков полнотекстового поиска, хотя бы того же sphinx\manticore, которые сложно и малоинтересно оформлять в виде универсальных модулей. Или там всякие saas-решения умного поиска с интеграциями через yml-фиды. Они могут стать настоящим открытием и отличным решением, хотя и обойдутся дороже.

Если интересно - напишите в лс. Есть правда большой опыт организации мгновенного релевантного поиска на сайте, в т.ч. даже с 1млн+ товарами.
rodger-bober
Сообщения: 4
Зарегистрирован: 29.09.2024
Поблагодарил: 2 раз
Спасибо: 1 раз

Re: Ускорение поиска

Непрочитанное сообщение rodger-bober »

100napb писал(а): 18 окт 2024, 13:50 подавляющее большинство готовых решений\модулей для опенкарта используют под капотом обычные select .. where ... like "%%" запросы к таблицам опенкарта. Потому, что бы ускорить подобные запросы, чаще всего достаточно просто добавить индексы в нужные таблицы бд через тот же phpmyadmin. Например, у вас медленно работает поиск по артикулу товара; артикул товара находится в поле model таблицы oc_product. Аналогично, нужно убедиться, что для прочих sku, ean и тд индексы то же есть, если они используются. И в самых простых случаях это поможет.

Другое дело, что такие запросы неспособны учесть опечатки или морфологию (по запросу "синий" не найдётся "синие", например), да и работают, мягко скажем, не быстро, особенно - когда речь идет о поиске по части слова (в некоторых случаях mysql не может использовать индекс) или когда товаров просто много - для живого поиска на сайте весьма критично.

Существуют частные разработки на базе движков полнотекстового поиска, хотя бы того же sphinx\manticore, которые сложно и малоинтересно оформлять в виде универсальных модулей. Или там всякие saas-решения умного поиска с интеграциями через yml-фиды. Они могут стать настоящим открытием и отличным решением, хотя и обойдутся дороже.

Если интересно - напишите в лс. Есть правда большой опыт организации мгновенного релевантного поиска на сайте, в т.ч. даже с 1млн+ товарами.

Спасибо за ответ как и в прошлый раз натолкнули на умные мысли, я так понимаю как временный костыль будет достаточно модуля по типу imdboptimizer,а дальше уже будет видно, по мере роста магазина можно будет к более интересным решениям обратиться. 
 
Аватара пользователя
devimirochnik
Разработчик дополнений
Сообщения: 189
Зарегистрирован: 14.04.2022
Откуда: Россия
Мои дополнения: devimirochnik
Поблагодарил: 3 раз
Спасибо: 14 раз

Re: Ускорение поиска

Непрочитанное сообщение devimirochnik »

rodger-bober писал(а): 18 окт 2024, 15:58 Спасибо за ответ как и в прошлый раз натолкнули на умные мысли, я так понимаю как временный костыль будет достаточно модуля по типу imdboptimizer,а дальше уже будет видно, по мере роста магазина можно будет к более интересным решениям обратиться. 
Модуль IMDBOptimizer решает задачи оптимизации всего магазина (снижение нагрузки БД. ускорение запросов). Поиск по тексту это отдельная часть. И полноценный модуль для ускорения поиска стоил бы существенно дороже. Если бы поиск был прост, то поисковых систем не существовало бы или их бы клепали сотнями
Мои модули: Оптимизация, SEO, Скидки, Отчёты и прочее

Оказываю услуги поддержки и выполнения различного рода задач для сайтов (допилы) в рамках самозанятости (фриланс). Стоимость и прочее зависит от задач. График ненормированный, но дело делаю.
Аватара пользователя
BuslikDrev
Разработчик дополнений
Сообщения: 140
Зарегистрирован: 22.04.2022
Откуда: Кіеўская Русь
Поблагодарил: 4 раз
Спасибо: 9 раз
Контактная информация:

Re: Ускорение поиска

Непрочитанное сообщение BuslikDrev »

В первую очередь нужно переписать запрос получения списка товара на страницу - можно сократить запросы (обращение к таблице товаров) в разы.
Ответить