• Объявления

    • dinox

      Закрытый раздел разработчиков   21.08.2017

      У нас на форуме существует закрытый раздел для разработчиков в котором мы обсуждаем нюансы работы на нашем форуме, в каталоге дополнений и другие моменты которые интересны в большинстве случаев только разработчикам. На данный момент существует лишь 2 условия для попадания:
      1. Наличие промодерированного дополнения в нашем каталоге  2. Отсуствие варезной деятельности 
      Если эти правила выполнены, пишите запрос @ArtemPitov на попадание в раздел разработчиков
halfhope

Оптимизация функций getProductAttributes и getProductOptions в модели catalog/product

Рекомендуемые сообщения

halfhope    154

Недавно обратился клиент (OcStore 1.5.5.1.2.) с просьбой посмотреть и узнать где именно тормоза на сайте. Так как, на сайте под завязку используются опции и аттрибуты, я стал грешить на них еще до проверки, проверка xhprof дала понять, что я не ошибался. Одним кэшированием тут не отделаться, так как данные магазина постоянно обновляются и механизм инвалидации кэша далек от идеала.

 

Было принято решение оптимизировать функции получения списка аттрибутов и опций. Что именно сделано: Убраны дополнительные подзапросы из цикла обработки аттрибутов и опций, так как все необходимые данные можно получить в одном запросе. Так же используются PHP указатели, что позволит обработать все данные в одном цикле. Все это позволит получить все необходимые данные за один запрос и быстро из обработать. 

 

В данном частном случае производительность увеличилась почти в 30 раз (очень много опций, значений опций и аттрибутов почти у каждого товара). 


public function getProductAttributes($product_id) {
	$product_attribute_group_data = array();

	$product_attribute_group_query = $this->db->query("SELECT a.attribute_id, ad.name as attribute_name, pa.text, ag.attribute_group_id, agd.name as attribute_group_name FROM " . DB_PREFIX . "product_attribute pa
	LEFT JOIN " . DB_PREFIX . "attribute a ON (pa.attribute_id = a.attribute_id)
	LEFT JOIN " . DB_PREFIX . "attribute_description ad ON (a.attribute_id = ad.attribute_id)
	LEFT JOIN " . DB_PREFIX . "attribute_group ag ON (a.attribute_group_id = ag.attribute_group_id)
	LEFT JOIN " . DB_PREFIX . "attribute_group_description agd ON (ag.attribute_group_id = agd.attribute_group_id)
	WHERE pa.product_id = " . (int)$product_id . "
		AND ad.language_id = agd.language_id
		AND pa.language_id = agd.language_id
		AND agd.language_id = " . (int)$this->config->get('config_language_id') . "
	ORDER BY ag.sort_order, agd.name, a.sort_order, ad.name");

	$product_attribute_data = array();

	foreach ($product_attribute_group_query->rows as $product_attribute) {
		$product_attribute_data[$product_attribute['attribute_id']][] = array(
			'attribute_id' => $product_attribute['attribute_id'],
			'name'         => $product_attribute['attribute_name'],
			'text'         => $product_attribute['text']
		);

		$product_attribute_group_data[$product_attribute['attribute_group_id']] = array(
			'attribute_group_id' => $product_attribute['attribute_group_id'],
			'name'               => $product_attribute['attribute_group_name'],
		);

		$product_attribute_group_data[$product_attribute['attribute_group_id']]['attribute'] =& $product_attribute_data[$product_attribute['attribute_id']];

	}

	return $product_attribute_group_data;
}

public function getProductOptions($product_id) {
	$product_option_data = array();
    $product_option_query = $this->db->query("SELECT pov.product_option_value_id, pov.option_value_id, ovd.name as product_option_value_name, od.name as option_name, ov.image, pov.quantity, pov.subtract, pov.price, pov.price_prefix, pov.points, pov.points_prefix, pov.weight, pov.weight_prefix, pov.product_option_id, pov.option_id, o.type, po.required
        FROM " . DB_PREFIX . "product_option_value pov
        LEFT JOIN " . DB_PREFIX . "option_value ov ON (pov.option_value_id = ov.option_value_id)
        LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id)
        LEFT JOIN " . DB_PREFIX . "product_option po ON (pov.product_option_id = po.product_option_id)
        LEFT JOIN `" . DB_PREFIX . "option` o ON (po.option_id = o.option_id)
        LEFT JOIN " . DB_PREFIX . "option_description od ON (o.option_id = od.option_id)
        WHERE po.product_id = " . (int)$product_id . "
            AND od.language_id = " . (int)$this->config->get('config_language_id') . "
        ORDER BY o.sort_order, ov.sort_order");

    $product_option_value_data = array();

    foreach ($product_option_query->rows as $product_option) {

    	if (in_array($product_option['type'], array('select','radio','checkbox','image'))) {

            $product_option_value_data[$product_option['product_option_id']][] = array(
                'product_option_value_id' => $product_option['product_option_value_id'],
                'option_value_id'         => $product_option['option_value_id'],
                'name'                    => $product_option['product_option_value_name'],
                'image'                   => $product_option['image'],
                'quantity'                => $product_option['quantity'],
                'subtract'                => $product_option['subtract'],
                'price'                   => $product_option['price'],
                'price_prefix'            => $product_option['price_prefix'],
                'points'                  => $product_option['points'],
                'points_prefix'           => $product_option['points_prefix'],
                'weight'                  => $product_option['weight'],
                'weight_prefix'           => $product_option['weight_prefix']
            );

            $product_option_data[$product_option['option_id']] = array(
				'product_option_id'    => $product_option['product_option_id'],
				'option_id'            => $product_option['option_id'],
				'name'                 => $product_option['option_name'],
				'type'                 => $product_option['type'],
				'required'             => $product_option['required']
			);

			$product_option_data[$product_option['option_id']]['option_value'] =& $product_option_value_data[$product_option['product_option_id']];

    	}else{
    		$product_option_data[$product_option['option_id']] = array(
				'product_option_id' => $product_option['product_option_id'],
				'option_id'         => $product_option['option_id'],
				'name'              => $product_option['option_name'],
				'type'              => $product_option['type'],
				'option_value'      => $product_option['option_value'],
				'required'          => $product_option['required']
			);
    	}
    }

	return $product_option_data;
}

 

По аналогии поступил с админкой (только опции) и с модулем CSV Product Export. Будьте внимательны при использовании этого кода, он изменен, а значит и vqmod модификации, которые работают с этим участком кода могут работать не так как ожидается. 

Изменено пользователем halfhope

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
tabook    124

Спасибо. Как раз в тему, попробую сейчас на реальном магазине с 20К товарами

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
halfhope    154

UPD: Накосячил слегка с аттрибутами:


public function getProductAttributes($product_id) {
	$product_attribute_group_data = array();

	$product_attribute_group_query = $this->db->query("SELECT a.attribute_id, ad.name as attribute_name, pa.text, ag.attribute_group_id, agd.name as attribute_group_name FROM " . DB_PREFIX . "product_attribute pa
	LEFT JOIN " . DB_PREFIX . "attribute a ON (pa.attribute_id = a.attribute_id)
	LEFT JOIN " . DB_PREFIX . "attribute_description ad ON (a.attribute_id = ad.attribute_id)
	LEFT JOIN " . DB_PREFIX . "attribute_group ag ON (a.attribute_group_id = ag.attribute_group_id)
	LEFT JOIN " . DB_PREFIX . "attribute_group_description agd ON (ag.attribute_group_id = agd.attribute_group_id)
	WHERE pa.product_id = " . (int)$product_id . "
		AND ad.language_id = agd.language_id
		AND pa.language_id = agd.language_id
		AND agd.language_id = " . (int)$this->config->get('config_language_id') . "
	ORDER BY ag.sort_order, agd.name, a.sort_order, ad.name");

	$product_attribute_data = array();

	foreach ($product_attribute_group_query->rows as $product_attribute) {
		$product_attribute_data[$product_attribute['attribute_group_id']][$product_attribute['attribute_id']] = array(
			'attribute_id' => $product_attribute['attribute_id'],
			'name'         => $product_attribute['attribute_name'],
			'text'         => $product_attribute['text']
		);

		$product_attribute_group_data[$product_attribute['attribute_group_id']] = array(
			'attribute_group_id' => $product_attribute['attribute_group_id'],
			'name'               => $product_attribute['attribute_group_name'],
		);

		$product_attribute_group_data[$product_attribute['attribute_group_id']]['attribute'] =& $product_attribute_data[$product_attribute['attribute_group_id']];

	}

	return $product_attribute_group_data;
}
Изменено пользователем halfhope

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
AWARO    522

и моё благодарю)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Похожий контент

    • От markimax


      Просмотр файла Jet Cache :: SEO CMS Джет Кеш - кеширование для магазинов

       

      Логин / пароль:
      demo / demo
       
      Документация  
      Более 8000 интернет магазинов выбрали SEO CMS для работы
      SEO CMS JET CACHE :: Jet Cache - быстрая система кеширования страниц, контроллеров и методов моделей opencart
      Возможности
       
      - кеширует полностью страницы  
      - кеширует выбранные контроллеры  
      - кеширует методы моделей opencart  
      - простая установка и обновление  
      - гибкие настройки  
      - поддержка мультиязычности  
      - поддержка мультимагазинов  
      - поддержка протоколов https и http  
      - гибкая взаимосвязь с любым функционалом платформы SEO CMS  
      - совместимость с любой темой, любыми модулями, которые соответствуют стандартам программирования  
      - поддержка кеширования sitemap Чем модуль лучше других
       
      - уникальные технологии кеширования не имеющие аналогов в opencart  
      - модуль работает с любыми темами и модулями Требования
       
      Opencart 2.x или любая сборка на нем (ocStore, Opencart.PRO, или другие) PHP 5.3 или выше Модуль НЕ заменяет файлы системы Модуль НЕ использует ioncube  
      Совместимость модуля
       
      Opencart 2.x или любая сборка на нем (ocStore, Opencart.PRO, или другие) Любая тема или любые модули (которые сделаны без ошибок, согласно стандартов программирования или верстки) для оpencart 2.x  
      Установка, настройка
       
      Если пользователь хочет чтобы сотрудник службы технической поддержки проделал работу по установке и настройке модуля вместо пользователя на сервере пользователя, это уже услуга + 590 рублей  
      Лицензия Все права на модуль принадлежат разработчикам opencartadmin.com Условия использования лицензии: один домен - одна лицензия (покупка продукта для каждого домена). Условия использования лицензии - "на владельца". Далее... Добавил markimax Добавлено 15.03.2017 Категория Модули Системные требования PHP 5.3+ Сайт разработчика https://opencartadmin.com/seo-cms-jet-cache.html Старая цена 590 Метод активации Через официальный сайт дополнения Ioncube Loader Нет OpenCart 2.3
      2.2
      2.1
      2.0 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х  
    • От MaxD


      Просмотр файла OpenCart Lightning
      .
       
      OpenCart Lightning - это мод для ускорения работы магазинов. Он использует целый ряд технологий и ноу-хау.
      Работает с ocStore, OpenShop, OpenCart 1.5 и OpenCart 2.0.
       
      Вот ссылка на демо-магазин с 20000 товаров на хостинге за $5 - http://demo.devs.mx/lightning
      почти мгновенное открытие страниц быстрая работа с большим количеством товаров и категорий повышение удобства навигации по магазину и рейтингов в поисковиках не надо настраивать и приглядывать, просто работает отпадает необходимость в дополнительных модах оптимизации или кеширования
      Полный список оптимизаций:
       
      Cтартовая, страницы категорий и брендов кешируются на 2 часа, если вы залогинены в админку - страницы, на которые вы заходите - после этого перегенерируются. То есть, если вы хотите увидеть изменения - просто обновите страницу.
       
      В админке появится панелька OpenCart Lightning:

       
      Она показывает время последнего показа страницы и количество свободного места на сервере. Если навести на нее мышкой, откроется окно:

       
      Тут можно посмотреть размеры кешей, статистику, отключить/включить OpenCart Lightning и очистить кеш.
       
      В большинстве случаев нет необходимости очищать кеш вручную - все обновляется автоматически.
       
      После установки у вас будет 7 дней тестового периода, дальше надо будет купить лицензию.
       
      Внимание: OpenCart Lightning не работает на localhost, только на реальных интернет-серверах.
       
      Установка
      Просто загрузите lightning20.ocmod.zip в инсталлятор.
       

      Рекомендуемые настройки для темы JOURNAL2
      =======================================
       
      JOURNAL2 Settings -> System & Performance:
      Caching System: On
      Minify HTML: Off
      Minify CSS: Off
      Minify JS: Off
      Modules Cache: Enable All кроме Side Category
       
      Lightning Settings:
      Minify & optimize JS/CSS page resources: Optimal
      .
      Добавил MaxD Добавлено 04.12.2014 Категория Прочее Системные требования Метод активации Автоматическая активация Ioncube Loader Нет OpenCart ocStore OpenCart.Pro, ocShop  
    • От sv2109


      View File Поисковая система с морфологией и релевантностью PRO
      Больше 10 тысяч загрузок модулей от sv2109!
      Модуль написал на основе модуля "Поиск с морфологией и релевантностью", который приобрели почти 700 пользователей!
      Что делает этот модуль?
      Это модуль поиска, основной особенностью которого является очень большая скорость поиска.
      Модуль в первую очередь создан для больших магазинов с тысячами товаров, а также для магазинов, которые работают на слабых хостингах.
      Модуль тестировался на магазине с 35 тысячами товаров.
      Модуль использует морфологию и релевантность для более точного поиска.
      Чем этот модуль отличается от других модулей поиска?
      К обычным поисковым модулям относятся: стандартный поиск OpenCart, другие модули поиска, например модуль "Поиск с морфологией и релевантностью".
      Как они работают? После того, как пользователь ввел фразу для поиска и нажал кнопку "Искать", модуль поиска для того, чтобы найти все товары, которые соответствуют поисковой фразе, должен обойти все товары в базе данных, причем информация о каждом товаре находится не в одной, а в нескольких таблицах с множеством полей, многие из которых никак не проиндексированы.
      Если у вас немного товаров на сайте (десятки, сотни) и быстрый сервер, то поиск у вас будет работать достаточно быстро.
      Но если у вас тысячи товаров в магазине (или даже десятки и сотни тысяч) или не самый быстрый сервер, то чем больше у вас будет товаров, тем медленнее будет работать поиск на вашем сайте. В некоторых случаях и 5 и 10 и даже больше секунд, что конечно же очень много, все, что больше 1-2 секунды это уже много, пользователи не будут столько времени ждать, они закроют ваш сайт и пойдут на другой.
      Как работает этот модуль?
      Этот модуль работает по тому же принципу, что и поисковые системы, поэтому он так и называется.
      Возьмем для примера поисковую систему Google. После того, как вы вводите в поле поиска, например, "OpenCart" и нажимаете кнопку "Поиск", Google отображает вам нужные результаты за доли секунды. Это возможно потому, что Google не ищет информацию непосредственно на каждом сайте в момент поиска, он уже до этого обошел все сайты и добавил эту информацию в свои очень быстрые базы данных, где все записи проиндексированы и лежат в базе с нужными весами (какой сайт показывать выше в выдаче, какой ниже). После этого Google осуществляет поиск по своих базах, это дает возможность найти сотни тысяч сайтов за доли секунды!
      Именно так работает и этот модуль. Сначала он обходит все товары в магазине и добавляет всю информацию в свои таблицы базы данных с индексами.
      Когда пользователь что-то ищет на сайте, поиск не обходит десятки полей в тысячах товаров, а ищет всего в одной таблице по проиндексированному одному полю, поэтому результат пользователь получит не через несколько секунд или даже десятков секунд, а через доли секунды, что в десятки и даже сотни раз быстрее стандартного поиска.
      Морфология и релевантность
      Как известно, стандартный поиск OpenCart просто ужасный. При поиске он разбивает искомую фразу на отдельные слова, после чего находит все товары, в которых встречается любое из этих слов. В результате при поиске по фразе "Монитор Samsung" на первых позициях может оказаться "монитор Acer" (так как в названии есть слово "монитор") или "ноутбук Samsung" так как в названии есть слово "Samsung". В то время, как нужный товар "Монитор Samsung" может быть где-то на 10-той странице. А если вы напишите в поиске не "ноутбук", а напр. "ноутбуки" или сделаете опечатку в слове "Samsung" то поиск вообще ничего не найдет, так как поиск осуществляется только по точному вхождению слова.
      Этот модуль написан для того, чтобы исправить все недостатки стандартного поиска.
      Для этого у него есть 2 инструмента:
      Морфология. Поиск не по точному совпадению, а по корням слов. Теперь написав в поиске "ноутбуки", поиск выдаст все товары в которых встречается и "ноутбуки" и "ноутбук" и "ноутбука" итд. Поддерживаемые словари - русский, украинский, английский. Релевантность. При поиске на первых позициях будут материалы с большим суммарным весом. Наибольший вес имеет точное вхождение фразы в начало названия товара, потом вхождение одного или нескольких слов в название (чем больше слов тем больший вес), потом вхождение слова в тег, потом целой фразы в описание, потом отдельного слова в описание. Чем больше совпадений, тем больше вес и тем выше будет этот товар в результатах поиска. Вес каждого совпадения можно корректировать в админке. Кому нужен этот модуль?
      сайтам, в которых несколько тысяч товаров, для увеличения качества и скорости поиска. всем, кто хочет иметь очень быстрый поиск на своем сайте. Просто зайдите на страницу поиска вашего сайта, введите фразу для поиска (из 3-5 слов, можно и больше) и нажмите "Искать". Если результат поиска вы получите более чем через 1-2 секунды, то вам скорее всего нужен этот модуль.
      Кому не нужен этот модуль?
      Тем, у кого на сайте не очень много товаров, быстрый сервер и поиск у вас отдает результат меньше, чем за 1 секунду. В этом случае, посмотрите на модуль "Поиск с морфологией и релевантностью", он поможем вам значительно увеличить качество поиска, хотя и не сделает поиск очень быстрым (но у вас со скоростью поиска и так все нормально).
      Возможности
      модуль написан на основе модуля "Поиск с морфологией и релевантностью", поэтому содержит весь огромный функционал того модуля использование морфологии и релевантности для более точного поиска выбор логики поиска для поиска по фразам из нескольких слов: И, ИЛИ поддержка мульти-магазина возможность отключить в поиске дату поступления товаров разные типы поиска (по точному совпадению или по началу слова) режим исправления раскладки клавиатуры ("фззду" -> "apple") учитывать наличие на складе (товары, которых нет в наличии будут отображаться в конце поиска) возможность включить кеширование результатов возможность добавлять новые поля для поиска, например можно добавить поиска по id товара, мета H1 и почти по любому полю товара. для каждого поля можно: включить морфологию, указать минимальную длину слова, указать вес вхождения слова в начало или середину поля возможность исключить некоторые слова из поиска возможность заменить слова при поиске (например слова с ошибками: "aple" -> "apple") поддержка нескольких режимов индексации: индексация по крону, автоматическая индексация после каждого добавления, изменения, удаления товара, ручная индексации на странице настроек модуля с поддержкой пакетного создание индексов (можно запустить процесс и оставить страницу открытой на продолжительное время) Модуль совместим с модулями:
      Search suggestion - поиск с автодополнением История Поиска Похожие товары с морфологией и релевантностью Совместимость:
      OpenCart/ocStore 2.0.x, 2.1.x, 1.5
      OpenCart 3.0 - по запросу.
       
      Модуль использует IonCube, обычно на 99% хостингов он используется но на всякий случай можете проверить.
      Одна лицензия модуля позволяет установить этот модуль на 1 домене.
      Демо:
      Сайт
      Админка
      Для связи с автором модуля пишите на sv2109@gmail.com
      © Стасюк Владимир (sv2109.com), 2016
      Submitter sv2109 Submitted 07/24/2016 Category Модули Системные требования Сайт разработчика sv2109.com Старая цена Метод активации По запросу в ЛС Ioncube Loader Требуется OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.4.1
      1.5.3.1 ocStore 2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х  
    • От sv2109
      Больше 10 тысяч загрузок модулей от sv2109!
      Модуль написал на основе модуля "Поиск с морфологией и релевантностью", который приобрели почти 700 пользователей!
      Что делает этот модуль?
      Это модуль поиска, основной особенностью которого является очень большая скорость поиска.
      Модуль в первую очередь создан для больших магазинов с тысячами товаров, а также для магазинов, которые работают на слабых хостингах.
      Модуль тестировался на магазине с 35 тысячами товаров.
      Модуль использует морфологию и релевантность для более точного поиска.
      Чем этот модуль отличается от других модулей поиска?
      К обычным поисковым модулям относятся: стандартный поиск OpenCart, другие модули поиска, например модуль "Поиск с морфологией и релевантностью".
      Как они работают? После того, как пользователь ввел фразу для поиска и нажал кнопку "Искать", модуль поиска для того, чтобы найти все товары, которые соответствуют поисковой фразе, должен обойти все товары в базе данных, причем информация о каждом товаре находится не в одной, а в нескольких таблицах с множеством полей, многие из которых никак не проиндексированы.
      Если у вас немного товаров на сайте (десятки, сотни) и быстрый сервер, то поиск у вас будет работать достаточно быстро.
      Но если у вас тысячи товаров в магазине (или даже десятки и сотни тысяч) или не самый быстрый сервер, то чем больше у вас будет товаров, тем медленнее будет работать поиск на вашем сайте. В некоторых случаях и 5 и 10 и даже больше секунд, что конечно же очень много, все, что больше 1-2 секунды это уже много, пользователи не будут столько времени ждать, они закроют ваш сайт и пойдут на другой.
      Как работает этот модуль?
      Этот модуль работает по тому же принципу, что и поисковые системы, поэтому он так и называется.
      Возьмем для примера поисковую систему Google. После того, как вы вводите в поле поиска, например, "OpenCart" и нажимаете кнопку "Поиск", Google отображает вам нужные результаты за доли секунды. Это возможно потому, что Google не ищет информацию непосредственно на каждом сайте в момент поиска, он уже до этого обошел все сайты и добавил эту информацию в свои очень быстрые базы данных, где все записи проиндексированы и лежат в базе с нужными весами (какой сайт показывать выше в выдаче, какой ниже). После этого Google осуществляет поиск по своих базах, это дает возможность найти сотни тысяч сайтов за доли секунды!
      Именно так работает и этот модуль. Сначала он обходит все товары в магазине и добавляет всю информацию в свои таблицы базы данных с индексами.
      Когда пользователь что-то ищет на сайте, поиск не обходит десятки полей в тысячах товаров, а ищет всего в одной таблице по проиндексированному одному полю, поэтому результат пользователь получит не через несколько секунд или даже десятков секунд, а через доли секунды, что в десятки и даже сотни раз быстрее стандартного поиска.
      Морфология и релевантность
      Как известно, стандартный поиск OpenCart просто ужасный. При поиске он разбивает искомую фразу на отдельные слова, после чего находит все товары, в которых встречается любое из этих слов. В результате при поиске по фразе "Монитор Samsung" на первых позициях может оказаться "монитор Acer" (так как в названии есть слово "монитор") или "ноутбук Samsung" так как в названии есть слово "Samsung". В то время, как нужный товар "Монитор Samsung" может быть где-то на 10-той странице. А если вы напишите в поиске не "ноутбук", а напр. "ноутбуки" или сделаете опечатку в слове "Samsung" то поиск вообще ничего не найдет, так как поиск осуществляется только по точному вхождению слова.
      Этот модуль написан для того, чтобы исправить все недостатки стандартного поиска.
      Для этого у него есть 2 инструмента:
      Морфология. Поиск не по точному совпадению, а по корням слов. Теперь написав в поиске "ноутбуки", поиск выдаст все товары в которых встречается и "ноутбуки" и "ноутбук" и "ноутбука" итд. Поддерживаемые словари - русский, украинский, английский. Релевантность. При поиске на первых позициях будут материалы с большим суммарным весом. Наибольший вес имеет точное вхождение фразы в начало названия товара, потом вхождение одного или нескольких слов в название (чем больше слов тем больший вес), потом вхождение слова в тег, потом целой фразы в описание, потом отдельного слова в описание. Чем больше совпадений, тем больше вес и тем выше будет этот товар в результатах поиска. Вес каждого совпадения можно корректировать в админке. Кому нужен этот модуль?
      сайтам, в которых несколько тысяч товаров, для увеличения качества и скорости поиска. всем, кто хочет иметь очень быстрый поиск на своем сайте. Просто зайдите на страницу поиска вашего сайта, введите фразу для поиска (из 3-5 слов, можно и больше) и нажмите "Искать". Если результат поиска вы получите более чем через 1-2 секунды, то вам скорее всего нужен этот модуль.
      Кому не нужен этот модуль?
      Тем, у кого на сайте не очень много товаров, быстрый сервер и поиск у вас отдает результат меньше, чем за 1 секунду. В этом случае, посмотрите на модуль "Поиск с морфологией и релевантностью", он поможем вам значительно увеличить качество поиска, хотя и не сделает поиск очень быстрым (но у вас со скоростью поиска и так все нормально).
      Возможности
      модуль написан на основе модуля "Поиск с морфологией и релевантностью", поэтому содержит весь огромный функционал того модуля использование морфологии и релевантности для более точного поиска выбор логики поиска для поиска по фразам из нескольких слов: И, ИЛИ поддержка мульти-магазина возможность отключить в поиске дату поступления товаров разные типы поиска (по точному совпадению или по началу слова) режим исправления раскладки клавиатуры ("фззду" -> "apple") учитывать наличие на складе (товары, которых нет в наличии будут отображаться в конце поиска) возможность включить кеширование результатов возможность добавлять новые поля для поиска, например можно добавить поиска по id товара, мета H1 и почти по любому полю товара. для каждого поля можно: включить морфологию, указать минимальную длину слова, указать вес вхождения слова в начало или середину поля возможность исключить некоторые слова из поиска возможность заменить слова при поиске (например слова с ошибками: "aple" -> "apple") поддержка нескольких режимов индексации: индексация по крону, автоматическая индексация после каждого добавления, изменения, удаления товара, ручная индексации на странице настроек модуля с поддержкой пакетного создание индексов (можно запустить процесс и оставить страницу открытой на продолжительное время) Модуль совместим с модулями:
      Search suggestion - поиск с автодополнением История Поиска Похожие товары с морфологией и релевантностью Совместимость:
      OpenCart/ocStore 2.0.x, 2.1.x, 1.5
      OpenCart 3.0 - по запросу.
       
      Модуль использует IonCube, обычно на 99% хостингов он используется но на всякий случай можете проверить.
      Одна лицензия модуля позволяет установить этот модуль на 1 домене.
      Демо:
      Сайт
      Админка
      Для связи с автором модуля пишите на sv2109@gmail.com
      © Стасюк Владимир (sv2109.com), 2016
    • От markimax

       

      Логин / пароль:
      demo / demo
       
      Документация  
      Более 8000 интернет магазинов выбрали SEO CMS для работы
      SEO CMS JET CACHE :: Jet Cache - быстрая система кеширования страниц, контроллеров и методов моделей opencart
      Возможности
       
      - кеширует полностью страницы  
      - кеширует выбранные контроллеры  
      - кеширует методы моделей opencart  
      - простая установка и обновление  
      - гибкие настройки  
      - поддержка мультиязычности  
      - поддержка мультимагазинов  
      - поддержка протоколов https и http  
      - гибкая взаимосвязь с любым функционалом платформы SEO CMS  
      - совместимость с любой темой, любыми модулями, которые соответствуют стандартам программирования  
      - поддержка кеширования sitemap Чем модуль лучше других
       
      - уникальные технологии кеширования не имеющие аналогов в opencart  
      - модуль работает с любыми темами и модулями Требования
       
      Opencart 2.x или любая сборка на нем (ocStore, Opencart.PRO, или другие) PHP 5.3 или выше Модуль НЕ заменяет файлы системы Модуль НЕ использует ioncube  
      Совместимость модуля
       
      Opencart 2.x или любая сборка на нем (ocStore, Opencart.PRO, или другие) Любая тема или любые модули (которые сделаны без ошибок, согласно стандартов программирования или верстки) для оpencart 2.x  
      Установка, настройка
       
      Если пользователь хочет чтобы сотрудник службы технической поддержки проделал работу по установке и настройке модуля вместо пользователя на сервере пользователя, это уже услуга + 590 рублей  
      Лицензия Все права на модуль принадлежат разработчикам opencartadmin.com Условия использования лицензии: один домен - одна лицензия (покупка продукта для каждого домена). Условия использования лицензии - "на владельца". Далее...
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу