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

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

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

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

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

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

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

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

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
Разработчик дополнений
Сообщения: 215
Зарегистрирован: 14.04.2022
Откуда: Россия
Мои дополнения: devimirochnik
Поблагодарил: 7 раз
Спасибо: 18 раз

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

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

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

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

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

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

В первую очередь нужно переписать запрос получения списка товара на страницу - можно сократить запросы (обращение к таблице товаров) в разы.
ursnab
Сообщения: 3
Зарегистрирован: 25.01.2026

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

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

Можно использовать Sphinx или Elasticsearch для организации поиска, строите индекс из Вашей БД, обновляете периодически или полностью дублируете данные в поисковом движке. Используй realtime индексы, в них не нужно постоянно перестраивать индексы, можно менять данные (цены, остатки и тд в поиске прямо как в обычной БД). Ну или если лень заниматься всем эти можете что то готовое глянуть, вот https://promosearch.ru/ допустим вариантов полно.
specialforce22
Сообщения: 127
Зарегистрирован: 18.03.2022
Поблагодарил: 24 раз
Спасибо: 20 раз

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

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

Чтобы не использовать сторонние сервисы, лучше использовать поиск местных производителей - https://liveopencart.ru/opencart-moduli ... i-istoriey
В нем можно ускорять поиск и повышать точность, используя индексы БД или Sphinx-Elasticsearch
Щастье за чашку капучино!
 
Ответить