Создание и разработка сайтов интернет-магазинов, внедрение и интеграции CRM Битрикс, обучение Битрикс
Продукты
  • Uspacy
  • Битрикс: Управление сайтом
    • Лицензии Битрикс: Управление сайтом
    • Переходы Битрикс: Управление сайтом
    • Продления Битрикс: Управление сайтом
  • Шаблоны
    • Шаблоны для интернет-магазина
    • Шаблоны для корпоративного сайта
  • Битрикс24
    • Облачный Битрикс24
    • Коробочный Битрикс24
      • Лицензии коробочной Битрикс24
      • Продления Битрикс24
      • Переходы на другие редакции Битрикс24
Услуги
  • Разработка интернет-магазинов
    • Индивидуальная разработка интернет-магазинов
    • Разработка интернет-магазинов на шаблоне
    • Разработка корпоративного сайта
    • Ускорение работы интернет-магазинов
    • Доработка сайтов на Битрикс
    • Перенос сайтов на Битрикс
  • Продвижение
    • SEO продвижение
    • SMM продвижение
    • Настройка контекстной рекламы
    • Настройка рекламы facebook и instagram
  • Внедрение CRM Uspacy
    • Пакет настроек Uspacy Express
    • Пакет настроек Uspacy Professional
    • Пакет настроек Uspacy Business
    • Пакет настроек Uspacy Custom
  • Техническая поддержка
    • Поддержка сайта на Битрикс "Управление сайтом"
    • Поддержка CRM Битрикс24
  • Аудиты
    • Аудит интернет-магазина
    • Аудит CRM
  • Обучение Битрикс
    • Обучение работе с Битрикс24 - пакет "Основа"
    • Обучение работе с Битрикс24 - пакет "CRM"
    • Обучение работе с Битрикс24 - пакет "Бизнес-процессы"
    • Обучение работе с Битрикс "Управление сайтом"
    • Обучение работе с Битрикс24 - пакет "Индивидуальный "
    • Обучение работе с Битрикс24 - пакет "Администратор"
  • Интеграции Битрикс
    • Интеграция Битрикс24 с интернет-магазином
    • Интеграция Битрикс24 с 1С
    • Интеграция Битрикс "Управление сайтом" с 1С
    • Интеграция Битрикс24 с IP - телефонией
  • Внедрение CRM Битрикс24
    • Пакет настроек Битрикс24 Express
    • Пакет настроек Битрикс24 Professional
    • Пакет настроек Битрикс24 Business
    • Пакет настроек Битрикс24 Custom
Проекты
  • Внедрение CRM
  • Разработка сайтов
  • Интеграции
  • Техническая поддержка
  • Доработка функционала
Компания
  • Партнеры
  • Отзывы
  • Вакансии компании
  • Вопрос ответ
Блог
Контакты
Вакансии
Ещё
    Задать вопрос
    Личный кабинет
    Корзина0
    +38 (063) 721-24-85
    Заказать звонок
    [email protected]
    г. Харьков пл. Защитников Украины д. 7/8 оф. 74
    • Facebook
    • Twitter
    • Instagram
    • Telegram
    • YouTube
    UA | RU
    0
    +38 (063) 721-24-85
    Заказать звонок
    Создание и разработка сайтов интернет-магазинов, внедрение и интеграции CRM Битрикс, обучение Битрикс
    Продукты
    • Uspacy
    • Битрикс: Управление сайтом
      • Лицензии Битрикс: Управление сайтом —
      • Переходы Битрикс: Управление сайтом —
      • Продления Битрикс: Управление сайтом
    • Шаблоны
      • Шаблоны для интернет-магазина —
      • Шаблоны для корпоративного сайта
    • Битрикс24
      • Облачный Битрикс24 —
      • Коробочный Битрикс24
    Услуги
    • Разработка интернет-магазинов
      • Индивидуальная разработка интернет-магазинов —
      • Разработка интернет-магазинов на шаблоне —
      • Разработка корпоративного сайта —
      • Ускорение работы интернет-магазинов —
      • Доработка сайтов на Битрикс —
      • Перенос сайтов на Битрикс
    • Продвижение
      • SEO продвижение —
      • SMM продвижение —
      • Настройка контекстной рекламы —
      • Настройка рекламы facebook и instagram
    • Внедрение CRM Uspacy
      • Пакет настроек Uspacy Express —
      • Пакет настроек Uspacy Professional —
      • Пакет настроек Uspacy Business —
      • Пакет настроек Uspacy Custom
    • Техническая поддержка
      • Поддержка сайта на Битрикс "Управление сайтом" —
      • Поддержка CRM Битрикс24
    • Аудиты
      • Аудит интернет-магазина —
      • Аудит CRM
    • Обучение Битрикс
      • Обучение работе с Битрикс24 - пакет "Основа" —
      • Обучение работе с Битрикс24 - пакет "CRM" —
      • Обучение работе с Битрикс24 - пакет "Бизнес-процессы" —
      • Обучение работе с Битрикс "Управление сайтом" —
      • Обучение работе с Битрикс24 - пакет "Индивидуальный " —
      • Обучение работе с Битрикс24 - пакет "Администратор"
    • Интеграции Битрикс
      • Интеграция Битрикс24 с интернет-магазином —
      • Интеграция Битрикс24 с 1С —
      • Интеграция Битрикс "Управление сайтом" с 1С —
      • Интеграция Битрикс24 с IP - телефонией
    • Внедрение CRM Битрикс24
      • Пакет настроек Битрикс24 Express —
      • Пакет настроек Битрикс24 Professional —
      • Пакет настроек Битрикс24 Business —
      • Пакет настроек Битрикс24 Custom
    Проекты
    • Внедрение CRM
    • Разработка сайтов
    • Интеграции
    • Техническая поддержка
    • Доработка функционала
    Компания
    • Партнеры
    • Отзывы
    • Вакансии компании
    • Вопрос ответ
    Блог
    Контакты
    Вакансии
      Создание и разработка сайтов интернет-магазинов, внедрение и интеграции CRM Битрикс, обучение Битрикс
      Продукты
      • Uspacy
      • Битрикс: Управление сайтом
        • Лицензии Битрикс: Управление сайтом —
        • Переходы Битрикс: Управление сайтом —
        • Продления Битрикс: Управление сайтом
      • Шаблоны
        • Шаблоны для интернет-магазина —
        • Шаблоны для корпоративного сайта
      • Битрикс24
        • Облачный Битрикс24 —
        • Коробочный Битрикс24
      Услуги
      • Разработка интернет-магазинов
        • Индивидуальная разработка интернет-магазинов —
        • Разработка интернет-магазинов на шаблоне —
        • Разработка корпоративного сайта —
        • Ускорение работы интернет-магазинов —
        • Доработка сайтов на Битрикс —
        • Перенос сайтов на Битрикс
      • Продвижение
        • SEO продвижение —
        • SMM продвижение —
        • Настройка контекстной рекламы —
        • Настройка рекламы facebook и instagram
      • Внедрение CRM Uspacy
        • Пакет настроек Uspacy Express —
        • Пакет настроек Uspacy Professional —
        • Пакет настроек Uspacy Business —
        • Пакет настроек Uspacy Custom
      • Техническая поддержка
        • Поддержка сайта на Битрикс "Управление сайтом" —
        • Поддержка CRM Битрикс24
      • Аудиты
        • Аудит интернет-магазина —
        • Аудит CRM
      • Обучение Битрикс
        • Обучение работе с Битрикс24 - пакет "Основа" —
        • Обучение работе с Битрикс24 - пакет "CRM" —
        • Обучение работе с Битрикс24 - пакет "Бизнес-процессы" —
        • Обучение работе с Битрикс "Управление сайтом" —
        • Обучение работе с Битрикс24 - пакет "Индивидуальный " —
        • Обучение работе с Битрикс24 - пакет "Администратор"
      • Интеграции Битрикс
        • Интеграция Битрикс24 с интернет-магазином —
        • Интеграция Битрикс24 с 1С —
        • Интеграция Битрикс "Управление сайтом" с 1С —
        • Интеграция Битрикс24 с IP - телефонией
      • Внедрение CRM Битрикс24
        • Пакет настроек Битрикс24 Express —
        • Пакет настроек Битрикс24 Professional —
        • Пакет настроек Битрикс24 Business —
        • Пакет настроек Битрикс24 Custom
      Проекты
      • Внедрение CRM
      • Разработка сайтов
      • Интеграции
      • Техническая поддержка
      • Доработка функционала
      Компания
      • Партнеры
      • Отзывы
      • Вакансии компании
      • Вопрос ответ
      Блог
      Контакты
      Вакансии
        0
        Создание и разработка сайтов интернет-магазинов, внедрение и интеграции CRM Битрикс, обучение Битрикс
        UA | RU
        0
        Создание и разработка сайтов интернет-магазинов, внедрение и интеграции CRM Битрикс, обучение Битрикс
        • Продукты
          • Назад
          • Продукты
          • Uspacy
          • Битрикс: Управление сайтом
            • Назад
            • Битрикс: Управление сайтом
            • Лицензии Битрикс: Управление сайтом
            • Переходы Битрикс: Управление сайтом
            • Продления Битрикс: Управление сайтом
          • Шаблоны
            • Назад
            • Шаблоны
            • Шаблоны для интернет-магазина
            • Шаблоны для корпоративного сайта
          • Битрикс24
            • Назад
            • Битрикс24
            • Облачный Битрикс24
            • Коробочный Битрикс24
              • Назад
              • Коробочный Битрикс24
              • Лицензии коробочной Битрикс24
              • Продления Битрикс24
              • Переходы на другие редакции Битрикс24
        • Услуги
          • Назад
          • Услуги
          • Разработка интернет-магазинов
            • Назад
            • Разработка интернет-магазинов
            • Индивидуальная разработка интернет-магазинов
            • Разработка интернет-магазинов на шаблоне
            • Разработка корпоративного сайта
            • Ускорение работы интернет-магазинов
            • Доработка сайтов на Битрикс
            • Перенос сайтов на Битрикс
          • Продвижение
            • Назад
            • Продвижение
            • SEO продвижение
            • SMM продвижение
            • Настройка контекстной рекламы
            • Настройка рекламы facebook и instagram
          • Внедрение CRM Uspacy
            • Назад
            • Внедрение CRM Uspacy
            • Пакет настроек Uspacy Express
            • Пакет настроек Uspacy Professional
            • Пакет настроек Uspacy Business
            • Пакет настроек Uspacy Custom
          • Техническая поддержка
            • Назад
            • Техническая поддержка
            • Поддержка сайта на Битрикс "Управление сайтом"
            • Поддержка CRM Битрикс24
          • Аудиты
            • Назад
            • Аудиты
            • Аудит интернет-магазина
            • Аудит CRM
          • Обучение Битрикс
            • Назад
            • Обучение Битрикс
            • Обучение работе с Битрикс24 - пакет "Основа"
            • Обучение работе с Битрикс24 - пакет "CRM"
            • Обучение работе с Битрикс24 - пакет "Бизнес-процессы"
            • Обучение работе с Битрикс "Управление сайтом"
            • Обучение работе с Битрикс24 - пакет "Индивидуальный "
            • Обучение работе с Битрикс24 - пакет "Администратор"
          • Интеграции Битрикс
            • Назад
            • Интеграции Битрикс
            • Интеграция Битрикс24 с интернет-магазином
            • Интеграция Битрикс24 с 1С
            • Интеграция Битрикс "Управление сайтом" с 1С
            • Интеграция Битрикс24 с IP - телефонией
          • Внедрение CRM Битрикс24
            • Назад
            • Внедрение CRM Битрикс24
            • Пакет настроек Битрикс24 Express
            • Пакет настроек Битрикс24 Professional
            • Пакет настроек Битрикс24 Business
            • Пакет настроек Битрикс24 Custom
        • Проекты
          • Назад
          • Проекты
          • Внедрение CRM
          • Разработка сайтов
          • Интеграции
          • Техническая поддержка
          • Доработка функционала
        • Компания
          • Назад
          • Компания
          • Партнеры
          • Отзывы
          • Вакансии компании
          • Вопрос ответ
        • Блог
        • Контакты
        • Вакансии
        • Мой кабинет
        • Корзина0
        • +38 (063) 721-24-85
        [email protected]
        г. Харьков пл. Защитников Украины д. 7/8 оф. 74
        • Facebook
        • Twitter
        • Instagram
        • Telegram
        • YouTube
        • Блог
        • Блог разработчика Битрикс
        • 1С-Битрикс. Добавляем в морфологический индекс поиска возможность искать по части слова

        1С-Битрикс. Добавляем в морфологический индекс поиска возможность искать по части слова

        11 мая 2017
        Блог разработчика Битрикс
        Наверняка, многие знают, что в битриксе есть морфологический поиск. И вроде бы он даже кое-как работает. Но если мы торгуем товарами, и хотим, чтобы поиск искал и по части чего-то специфического, например, артикула товара (пример: артикул «Р754777», подстрокой будет «54777»), то ничего из этого не выйдет. Поиск просто не найдет ничего.

         В этой статье мы разберем действенный способ решения этой проблемы.


        Наверняка, многие знают, что в битриксе есть морфологический поиск. И вроде бы он даже кое-как работает. Но если мы торгуем товарами, и хотим, чтобы поиск искал и по части чего-то специфического, например, артикула товара (пример: артикул «Р754777», подстрокой будет «54777»), то ничего из этого не выйдет. Поиск просто не найдет ничего.

        В этой статье мы разберем действенный способ решения этой проблемы.

        Суть


        В момент индексации элемента будем добавлять в таблицу b_search_content_stem наши части слов. То есть, в нашем случае, для товара с артикулом «Р6543» мы добавим «6543» в поисковый индекс. Запросы «654» и «65» так же будут отдавать товар с артикулом «Р6543».

        Обработчики — наше всё


        Как обычно, решать мы будем обработчиками. Оффтоп: иногда вижу проекты вообще без файлов init.php и своих кастомных модулей. Ребята, как вам удаётся без этого сайты собирать?


        Будем слушать 3 события: BeforeIndex, OnBeforeIndexUpdate и OnAfterIndexAdd.


        • BeforeIndex — вызывается перед индексацией элемента методом CSearch::Index()
        • OnBeforeIndexUpdate — вызывается перед обновлением поискового индекса
        • OnAfterIndexAdd — вызывается после добавления новых данных в поисковый индекс.

        На событие BeforeIndex мы проверим, что в индекс летит нужная нам запись и сохраним в статическую переменную данные, которые нам понадобятся в последующих событиях. По другому их там не достать

        На события OnBeforeIndexUpdate и OnAfterIndexAdd запишем в таблицу b_search_content_stem то, что нам нужно. API для этого нет, так что будем писать чистые SQL-запросы. Проверял на MySQL с InnoDB таблицей. На остальных не факт, что будет корректно работать


        Код обработчика


        Сохраняем код в файле /local/php_interface/classes/handlers/search/stemming.php


        В свойстве $allowedIblockId класса необходимо указать ID инфоблоков, для которых нужен функционал.


        			 <!?php namespace Olegpro\Classes\Handlers\Search; use Bitrix\Main\Loader; use Bitrix\Main\Application; use Bitrix\Main\DB\SqlQueryException;
        			class Stemming { /** * @var array */ protected static $allowedIblockId = array( 1 ); /** * @var */ private static $element; /** * @param array $arFields * @return mixed */ public static function beforeIndex($arFields) { static $allowedIblockId = null; if ($allowedIblockId === null) { $allowedIblockId = array_flip(self::$allowedIblockId); } if ( $arFields['MODULE_ID'] == 'iblock' && isset($allowedIblockId[$arFields['PARAM2']]) && strlen($arFields['ITEM_ID']) > 0 && substr($arFields['ITEM_ID'], 0, 1) != 'S' && Loader::includeModule('iblock') ) { if ($obElement = \CIBlockElement::GetList( array(), array('ID' => $arFields['ITEM_ID']), false, false, array() )->GetNextElement() ) { $element = $obElement->GetFields(); $element['PROPERTIES'] = $obElement->GetProperties(); self::$element = $element; } } return $arFields; } /** * Events: OnBeforeIndexUpdate and OnAfterIndexAdd * @param $indexId * @param $arFields */ public static function beforeIndexUpdate($indexId, $arFields) { if ( isset(self::$element) && is_array(self::$element) && isset(self::$element['PROPERTIES']['ARTICLE']) && strlen(trim(self::$element['PROPERTIES']['ARTICLE']['VALUE'])) && preg_match('~^.*?([0-9.,]+).*?$~', trim(self::$element['PROPERTIES']['ARTICLE']['VALUE']), $m) ) { $word = ToUpper($m[1]); $stemId = \CSearch::RegisterStem($word); if ($stemId > 0) { $connection = Application::getConnection(); $sqlHelper = $connection->getSqlHelper(); try { $thereIs = $connection->queryScalar( sprintf( "SELECT 1 FROM b_search_content_stem WHERE SEARCH_CONTENT_ID = '%s' AND STEM = '%s'", $sqlHelper->forSql($indexId), \CSearch::RegisterStem($word) ) ); if ($thereIs === null) { $connection->query(sprintf( "INSERT IGNORE INTO `b_search_content_stem` (`SEARCH_CONTENT_ID`, `LANGUAGE_ID`, `STEM`, `TF`, `PS`) VALUES ('%s', '%s', '%s', '%s', '%s')", $sqlHelper->forSql($indexId), 'ru', \CSearch::RegisterStem($word), number_format(0.2, 4, ".", ""), number_format(1, 4, ".", "") )); } } catch (SqlQueryException $e) { AddMessage2Log(sprintf("\\%s:\n%s", __METHOD__, $e->getMessage())); } } } self::$element = null; } }
        		

        Регистрируем обработчики и добавляем класс в автозагрузку


        Добавить в /local/php_interface/init.php
        		 <!?php \Bitrix\Main\EventManager::getInstance()->addEventHandler('search', 'BeforeIndex', array('\Olegpro\Classes\Handlers\Search\Stemming', 'beforeIndex') ); \Bitrix\Main\EventManager::getInstance()->addEventHandler('search', 'OnBeforeIndexUpdate', array('\Olegpro\Classes\Handlers\Search\Stemming', 'beforeIndexUpdate') ); \Bitrix\Main\EventManager::getInstance()->addEventHandler('search', 'OnAfterIndexAdd', array('\Olegpro\Classes\Handlers\Search\Stemming', 'beforeIndexUpdate') ); \Bitrix\Main\Loader::registerAutoLoadClasses(null, array( '\Olegpro\Classes\Handlers\Search\Stemming' => '/local/php_interface/classes/handlers/search/stemming.php', ));
        	

        На этом всё. Осталось только запустить полную переиндексацию и теперь можно не тратить жизнь на вписывание в поиск артикулов полностью.

        Автор статьи: Максименко Олег
        Статья взята из источника ссылка

        Нужна консультация?

        Наши специалисты ответят на любой интересующий вопрос

        Задать вопрос
        Поделиться
        Назад к списку
        Услуги
        Разработка интернет-магазинов
        Продвижение
        Внедрение CRM Uspacy
        Техническая поддержка
        Аудиты
        Обучение Битрикс
        Интеграции Битрикс
        Внедрение CRM Битрикс24
        Продукты
        Uspacy
        Битрикс: Управление сайтом
        Шаблоны
        Битрикс24
        Компания
        Партнеры
        Отзывы
        Вакансии компании
        Вопрос ответ
        Проекты
        Прес-центр
        Контакты
        Карта сайта
        +38 (063) 721-24-85
        Заказать звонок
        [email protected]
        г. Харьков пл. Защитников Украины д. 7/8 оф. 74
        • Facebook
        • Twitter
        • Instagram
        • Telegram
        • YouTube
        Версия для печати
        Политика конфиденциальности
        © 2013 - 2026 BX-master - полный комплекс услуг для бизнеса!
        0

        Ваша корзина пуста

        Исправить это просто: выберите в каталоге интересующий товар и нажмите кнопку «В корзину»
        В каталог
        Заказать звонок
        Написать сообщение
        Оставить отзыв
        Ближайший офис