Добрый день, интересует как можно ускорить работу поиска по товару а то долго работает, пробовал переключать режим кэширования с file на memcached,
страницы ощутимо с мемкечедом медленней работали.
Есть какие то решения, связка nginx+php-fpm, товаров около 80к на сайте
Ускорение поиска
-
- Сообщения: 4
- Зарегистрирован: 29.09.2024
- Поблагодарил: 2 раз
- Спасибо: 1 раз
Re: Ускорение поиска
подавляющее большинство готовых решений\модулей для опенкарта используют под капотом обычные select .. where ... like "%%" запросы к таблицам опенкарта. Потому, что бы ускорить подобные запросы, чаще всего достаточно просто добавить индексы в нужные таблицы бд через тот же phpmyadmin. Например, у вас медленно работает поиск по артикулу товара; артикул товара находится в поле model таблицы oc_product. Аналогично, нужно убедиться, что для прочих sku, ean и тд индексы то же есть, если они используются. И в самых простых случаях это поможет.
Другое дело, что такие запросы неспособны учесть опечатки или морфологию (по запросу "синий" не найдётся "синие", например), да и работают, мягко скажем, не быстро, особенно - когда речь идет о поиске по части слова (в некоторых случаях mysql не может использовать индекс) или когда товаров просто много - для живого поиска на сайте весьма критично.
Существуют частные разработки на базе движков полнотекстового поиска, хотя бы того же sphinx\manticore, которые сложно и малоинтересно оформлять в виде универсальных модулей. Или там всякие saas-решения умного поиска с интеграциями через yml-фиды. Они могут стать настоящим открытием и отличным решением, хотя и обойдутся дороже.
Если интересно - напишите в лс. Есть правда большой опыт организации мгновенного релевантного поиска на сайте, в т.ч. даже с 1млн+ товарами.
Другое дело, что такие запросы неспособны учесть опечатки или морфологию (по запросу "синий" не найдётся "синие", например), да и работают, мягко скажем, не быстро, особенно - когда речь идет о поиске по части слова (в некоторых случаях mysql не может использовать индекс) или когда товаров просто много - для живого поиска на сайте весьма критично.
Существуют частные разработки на базе движков полнотекстового поиска, хотя бы того же sphinx\manticore, которые сложно и малоинтересно оформлять в виде универсальных модулей. Или там всякие saas-решения умного поиска с интеграциями через yml-фиды. Они могут стать настоящим открытием и отличным решением, хотя и обойдутся дороже.
Если интересно - напишите в лс. Есть правда большой опыт организации мгновенного релевантного поиска на сайте, в т.ч. даже с 1млн+ товарами.
-
- Сообщения: 4
- Зарегистрирован: 29.09.2024
- Поблагодарил: 2 раз
- Спасибо: 1 раз
Re: Ускорение поиска
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: Ускорение поиска
Модуль IMDBOptimizer решает задачи оптимизации всего магазина (снижение нагрузки БД. ускорение запросов). Поиск по тексту это отдельная часть. И полноценный модуль для ускорения поиска стоил бы существенно дороже. Если бы поиск был прост, то поисковых систем не существовало бы или их бы клепали сотнямиrodger-bober писал(а): ↑18 окт 2024, 15:58 Спасибо за ответ как и в прошлый раз натолкнули на умные мысли, я так понимаю как временный костыль будет достаточно модуля по типу imdboptimizer,а дальше уже будет видно, по мере роста магазина можно будет к более интересным решениям обратиться.
Мои модули: Оптимизация, SEO, Скидки, Отчёты и прочее
Оказываю услуги поддержки и выполнения различного рода задач для сайтов (допилы) в рамках самозанятости (фриланс). Стоимость и прочее зависит от задач. График ненормированный, но дело делаю.
Оказываю услуги поддержки и выполнения различного рода задач для сайтов (допилы) в рамках самозанятости (фриланс). Стоимость и прочее зависит от задач. График ненормированный, но дело делаю.
- BuslikDrev
- Разработчик дополнений
- Сообщения: 140
- Зарегистрирован: 22.04.2022
- Откуда: Кіеўская Русь
- Поблагодарил: 4 раз
- Спасибо: 9 раз
- Контактная информация:
Re: Ускорение поиска
В первую очередь нужно переписать запрос получения списка товара на страницу - можно сократить запросы (обращение к таблице товаров) в разы.