Категории

[FAQ] Часто задаваемые вопросы и ответы

Проблемы и решения

Ошибки и исправления

Общие вопросы

Расширения

Установка и обновление

Модули

Шаблоны

Локализация интерфейса

Коммерческие предложения

Учимся бизнесу

Бизнес книги

Поисковая оптимизация (SEO)

Магазины на ShopOS

Хостинг для ShopOS

Предложения и пожелания

Курилка

Проблема с поиском на сайте

При использовании поиска выдает страницу "Извините!
Интернет-магазин закрыт по техническим причинам, заходите позже".

НА локалке все работает. Возможно дело в каких-то ограничениях хостинга. Но хостинг не пододвинется, нужно оптимизировать код.

На сайте около 1500 товаров, с атрибутами и доп.полями.

код ошибки:  1104 - The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay | SELECT distinct
                  p.products_id,
                  p.products_price,
                  p.products_model,
                  p.products_quantity,
                  p.products_shippingtime,
                  p.products_fsk18,
                  p.products_image,
                  p.products_weight,
                  p.products_tax_class_id,
                  pd.products_name,
                  pd.products_short_description,
                  pd.products_description FROM os_products AS p LEFT JOIN os_products_description AS pd ON (p.products_id = pd.products_id)  LEFT OUTER JOIN os_products_attributes AS pa ON (p.products_id = pa.products_id) LEFT OUTER JOIN os_products_options_values AS pov ON (pa.options_values_id = pov.products_options_values_id) LEFT OUTER JOIN os_specials AS s ON (p.products_id = s.products_id) AND s.status = '1' LEFT OUTER JOIN os_products_to_products_extra_fields AS pe ON (p.products_id = pe.products_id) WHERE p.products_status = '1'  AND pd.language_id = '1' AND (  ( pd.products_keywords LIKE ('%╤А╨░╨╖╨╝╨╡╤Й╨╡╨╜╤Л%') OR pd.products_description LIKE ('%╤А╨░╨╖╨╝╨╡╤Й╨╡╨╜╤Л%') OR pd.products_short_description LIKE ('%╤А╨░╨╖╨╝╨╡╤Й╨╡╨╜╤Л%') OR pd.products_name LIKE ('%╤А╨░╨╖╨╝╨╡╤Й╨╡╨╜╤Л%') OR p.products_model LIKE ('%╤А╨░╨╖╨╝╨╡╤Й╨╡╨╜╤Л%')  OR pe.products_extra_fields_value LIKE ('%╤А╨░╨╖╨╝╨╡╤Й╨╡╨╜╤Л%') OR (pov.products_options_values_name LIKE ('%╤А╨░╨╖╨╝╨╡╤Й╨╡╨╜╤Л%') AND pov.language_id = '1') )  or  ( pd.products_keywords LIKE ('%╨╜╨╛╨▓╤Л╨╡%') OR pd.products_description LIKE ('%╨╜╨╛╨▓╤Л╨╡%') OR pd.products_short_description LIKE ('%╨╜╨╛╨▓╤Л╨╡%') OR pd.products_name LIKE ('%╨╜╨╛╨▓╤Л╨╡%') OR p.products_model LIKE ('%╨╜╨╛╨▓╤Л╨╡%')  OR pe.products_extra_fields_value LIKE ('%╨╜╨╛╨▓╤Л╨╡%') OR (pov.products_options_values_name LIKE ('%╨╜╨╛╨▓╤Л╨╡%') AND pov.language_id = '1') )  or  ( pd.products_keywords LIKE ('%╤Б╤В╨░╤В╤М╨╕%') OR pd.products_description LIKE ('%╤Б╤В╨░╤В╤М╨╕%') OR pd.products_short_description LIKE ('%╤Б╤В╨░╤В╤М╨╕%') OR pd.products_name LIKE ('%╤Б╤В╨░╤В╤М╨╕%') OR p.products_model LIKE ('%╤Б╤В╨░╤В╤М╨╕%')  OR pe.products_extra_fields_value LIKE ('%╤Б╤В╨░╤В╤М╨╕%') OR (pov.products_options_values_name LIKE ('%╤Б╤В╨░╤В╤М╨╕%') AND pov.language_id = '1') )  or  ( pd.products_keywords LIKE ('%╨╛%') OR pd.products_description LIKE ('%╨╛%') OR pd.products_short_description LIKE ('%╨╛%') OR pd.products_name LIKE ('%╨╛%') OR p.products_model LIKE ('%╨╛%')  OR pe.products_extra_fields_value LIKE ('%╨╛%') OR (pov.products_options_values_name LIKE ('%╨╛%') AND pov.language_id = '1') )  or  ( pd.products_keywords LIKE ('%╨▒╤А╨╡╨╜╨┤╨░╤Е%') OR pd.products_description LIKE ('%╨▒╤А╨╡╨╜╨┤╨░╤Е%') OR pd.products_short_description LIKE ('%╨▒╤А╨╡╨╜╨┤╨░╤Е%') OR pd.products_name LIKE ('%╨▒╤А╨╡╨╜╨┤╨░╤Е%') OR p.products_model LIKE ('%╨▒╤А╨╡╨╜╨┤╨░╤Е%')  OR pe.products_extra_fields_value LIKE ('%╨▒╤А╨╡╨╜╨┤╨░╤Е%') OR (pov.products_options_values_name LIKE ('%╨▒╤А╨╡╨╜╨┤╨░╤Е%') AND pov.language_id = '1') )  ) GROUP BY p.products_id ORDER BY p.products_id  | /advanced_search_result.php?keywords=%D0%A0%D0%B0%D0%B7%D0%BC%D0%B5%D1%89%D0%B5%D0%BD%D1%8B+%D0%BD%D0%BE%D0%B2%D1%8B%D0%B5+%D1%81%D1%82%D0%B0%D1%82%D1%8C%D0%B8+%D0%BE+%D0%B1%D1%80%D0%B5%D0%BD%D0%B4%D0%B0%D1%85&x=-3&y=11

Что можно сделать?


Скорее всего, запрос перегружен из-за атрибутов.
Надо весь  скрипт  поиска менять.


А как-то можно ограничить поиск названием товара к примеру? Или артикулом. Чтобы не перегружать.


Можно, конечно.

Проще всего ограничиться поиском по названию, артикулу. Будет существенно проще.
Если же надо поиск и по атрибутам, то в коде изменений существенно больше надо делать.


Сайт находится на хостинге или на локалке?


В общем можете сперва попробовать вот что..
1) бекап базы (резервное копирование)
2) phpMyadmin
3) вкладочка SQL поле  "Выполнить SQL запрос(ы) на БД :"

4) А вот тут нужно уточнить. Если ваш запрос не проходит на хостинге - это нормально, более или менее. Тогда стоит попробоват ьвыполнить его же на Денвере. Если на Денвере пройдет, тогда смело выполняйте запрос:

                                    SET SQL_MAX_JOIN_SIZE = 4294967295999999

уже на сайте (про резервное копирование базы не забудьте!!)

4294967295999999 - это значение по умолчанию для Денвера, поэтому если на Денвере запрос проходит, его будет вполне достаточно. Если и на Денвере не проходит, тогда можно сперва на локалке попробовать подобрать данное значение, увеличивая.

Хотя учитывая какой сложный получается запрос, могу сказать даже если он выполнится на это уйдет нескольок секунд.

Поэтому думайте. Вероятнее всего что данный вариант прокатит и запрос пройдет. Однако если вы все же захотите успростить поиск, тогда админка/настройки/основные/настройка поиска/ и соответственно попробовать отключить опцию:
Поиск а атрибутах товаров
Разрешить поиск в атрибутах товаров


Источник



Copyright ShopOS