BUSSOL / ДОКУМЕНТАЦИЯ

SmartSearch

Умный поиск по сайту: текст, голос, артикулы и похожие изображения
Версия 2.0.101С-БитриксМногосайтовостьD7 / AJAX
Руководство администратора, разработчика и пользователя · Октябрь 2026
Документация к сборке 2.0.10

Руководство составлено по содержимому поставляемого архива. Для штатного внедрения дополнительно проверяйте настройки, права и производительность на вашем сайте.

1. Назначение и принцип работы

Bussol SmartSearch — модуль интеллектуального поиска для «1С-Битрикс: Управление сайтом». Он помогает находить элементы инфоблоков по названию, тексту, символьным кодам, артикулам и настраиваемым свойствам, даже если запрос введён с ошибочной раскладкой или содержит простые опечатки.

ЗадачаКак работает модуль
Поиск товара или материалаФорма поиска обращается к серверному индексу и показывает названия, изображения и ссылки на найденные элементы.
Неверная раскладка и артикулыПробуются нормализованные варианты ввода, включая смешение латиницы и кириллицы.
Запрос голосомБраузер распознаёт речь; полученная строка нормализуется перед поиском.
Поиск похожего изображенияПри включении опции сравниваются локально рассчитанные перцептивные хеши dHash.
Несколько сайтовДля каждого сайта настраиваются собственные инфоблоки, поля, функции и внешний вид.
Работа в композитном режимеHTML формы можно кэшировать, а результаты загружаются отдельными AJAX-запросами.
Для кого

Подходит интернет-магазинам, каталогам оборудования и запчастей, корпоративным порталам и информационным сайтам с поиском по инфоблокам.

Версия документации: 2.0.10. Основана на исходных файлах сборки bussol.smartsearch-2.0.10-security-fixed.zip.

2. Что нового в версии 2.0.10

ВерсияИзменения
2.0.10Усилена защита загрузки изображений; добавлен CSRF-контроль, ограничения размера и разрешения, безопасная обработка URL результатов; усилена проверка административных параметров и доступа к подсказкам исправления.
2.0.9Добавлены настройки цвета кнопки поиска, её текста и рамки поля; обновлена SVG-иконка поиска по изображению.
2.0.8Поиск по изображению переведён на XMLHttpRequest с FormData, таймаутом и разбором ответа сервера.
2.0.0–2.0.1Индекс поиска, исправление раскладки и опечаток, распознавание голосовых артикулов, выбор области поиска, многосайтовость, поиск изображений и фоновая переиндексация.
Что сохраняется при обновлении

В сборке 2.0.10 сохранены структура настройки по сайтам, компонент bussol:smartsearch, отдельный индекс и меню «Bussol → Умный поиск». Изменения безопасности не добавляют платных внешних сервисов.

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

3. Системные требования и зависимости

КомпонентТребование / примечание
Платформа«1С-Битрикс: Управление сайтом», доступ к административному разделу и установленный модуль информационных блоков iblock.
PHPPHP 7.4 или новее согласно README модуля. Требуется расширение mbstring.
MySQLДоступ к базе данных, достаточный для создания таблицы b_bussol_smartsearch_index.
ИзображенияРасширение PHP GD для обработки изображений при включённом визуальном поиске.
Голосовой вводПоддержка Web Speech API браузером, HTTPS и разрешение пользователя на использование микрофона.
Фоновые операцииНастроенная работа агентов Битрикс для полной переиндексации.
Поддержка голосового ввода

Web Speech API доступен не во всех браузерах и может использовать внешний сервис распознавания речи самого браузера. Модуль не гарантирует офлайн-распознавание; пользователь может ввести текст вручную.

Поиск по изображениям не требует передачи загружаемого изображения стороннему API: dHash рассчитывается внутри PHP-приложения.

4. Установка и первое включение

Новая установка

  1. Распакуйте дистрибутив, убедитесь, что каталог модуля называется bussol.smartsearch.
  2. Разместите каталог в /local/modules/bussol.smartsearch/ (рекомендуемый вариант) либо /bitrix/modules/bussol.smartsearch/.
  3. Войдите в админку Битрикс с правами администратора, установите модуль через раздел установленных модулей.
  4. В левом меню откройте Bussol → Умный поиск → Настройки. Если раздел не появился после обновления — обновите интерфейс админки с очисткой её кэша.
  5. На вкладке нужного сайта включите модуль, выберите инфоблоки и поисковые поля, сохраните изменения.
  6. Запустите полную переиндексацию для выбранного сайта и дождитесь выполнения агента.
  7. Разместите компонент на странице или в шаблоне сайта и выполните контрольные запросы.
Установка и данные

Установщик создаёт отдельную индексную таблицу и копирует компонент и админ-файлы. На боевом проекте установка и обновление должны выполняться с резервной копией и возможностью отката.

Обновление с 2.0.9 до 2.0.10

  • Сделайте резервную копию и проверьте активные настройки всех сайтов.
  • Обновите файлы модуля через штатный механизм распространения или замену каталога с сохранением его расположения.
  • Убедитесь, что обновились файл версии, скрипт компонента и административные файлы.
  • Перезапустите переиндексацию, если менялись индексируемые поля, свойства или поиск изображений.
  • Повторно проверьте ввод текста, загрузку изображения и права пользователей.

Не удаляйте и не переустанавливайте модуль исключительно ради обновления: удаление может затронуть данные индекса в зависимости от выбранного режима удаления.

5. Меню администрации и права доступа

В версии 2.0.10 модуль добавляет собственный пункт в общее левое меню Bussol, аналогично другим решениям разработчика.

Bussol
  └── Умный поиск
       └── Настройки
ЭлементАдрес / назначение
МенюBussol → Умный поиск → Настройки.
Страница настроек/bitrix/admin/bussol_smartsearch_settings.php.
Исходная страницаadmin/settings.php внутри каталога модуля; использует интерфейс options.php.
Обычная страница параметровНастройки модуля доступны также через стандартный механизм параметров Битрикс.
Права

Меню может быть видно пользователю с правом чтения модуля, но фактическое редактирование настроек в options.php разрешено только администратору. Не путайте видимость пункта и возможность менять параметры.

Общая иконка раздела Bussol используется совместно с другими модулями; пункт SmartSearch содержит собственную иконку на основе логотипа поиска.

6. Настройки по сайтам: полный справочник

Для каждого сайта Битрикс интерфейс показывает отдельную вкладку. Идентификатор сайта состоит из двух символов. Набор параметров хранится по сайту, поэтому настройки разных сайтов не смешиваются.

ПараметрНазначениеИсходное значение
Включить умный поискОтображать компонент и выполнять поиск для сайта.Да
Инфоблоки для поискаСписок инфоблоков, которые включаются в поиск.Не выбраны
Поля элементовПоля, сохраняемые в поисковом индексе.NAME, PREVIEW_TEXT, DETAIL_TEXT
Символьные коды свойствКоды индексируемых свойств через запятую.Пусто
Исправлять опечатки и раскладкуИспользовать нормализацию и приближённый поиск.Да
Разрешить голосовой вводВыводить кнопку микрофона в интерфейсе.Да
Язык распознаванияКод языка Web Speech API.ru-RU
Поиск похожих изображенийРазрешать поиск по загружаемому изображению.Нет
Цвет кнопки «Найти»CSS-цвет фона кнопки.#2367ad
Цвет текста кнопкиCSS-цвет надписи кнопки.#ffffff
Цвет рамки поляЦвет границы поисковой строки.#c9ced6
Количество результатовМаксимальное число результатов выдачи.20 (границы 1–100)
Минимальная длинаМинимальная длина допустимого запроса.2 (границы 1–10)

Какие поля поддерживаются

Допустимые поля в интерфейсе: NAME, PREVIEW_TEXT, DETAIL_TEXT, SEARCHABLE_CONTENT, CODE, XML_ID. Свойства указываются по символьным кодам, например ARTICLE,CML2_ARTICLE.

Важно при изменениях

Изменение списка инфоблоков, полей и свойств требует полной переиндексации, иначе в индексе останутся прежние текстовые значения. Изменение цветов обычно не требует переиндексации.

7. Подключение компонента на сайт

Форма поиска подключается стандартным компонентом bussol:smartsearch. Размещайте её в нужной области шаблона сайта или на обычной странице.

<?php
$APPLICATION->IncludeComponent(
    'bussol:smartsearch',
    '',
    [
        'SITE_ID' => SITE_ID,
        'PLACEHOLDER' => 'Название, артикул или модель',
        'SHOW_SCOPE' => 'Y',
        'CACHE_TIME' => 3600,
    ]
);
ПараметрТип и действие
SITE_IDСтрока: двухсимвольный идентификатор сайта; по умолчанию используется SITE_ID текущего сайта.
PLACEHOLDERТекст подсказки внутри поискового поля.
SHOW_SCOPEY/N: показывать выпадающий выбор области; он выводится, только если доступно более одного инфоблока.
CACHE_TIMEСрок кэширования оболочки компонента в секундах, по умолчанию 3600.
Композитный режим

HTML формы кэшируется штатным способом Битрикс, а результаты загружаются через D7-контроллер без перезагрузки страницы. Для динамических результатов не требуется вручную выключать кэш страницы.

Шаблон по умолчанию располагается в install/components/bussol/smartsearch/templates/.default/. При оформлении сайта рекомендуется переопределять шаблон штатными средствами Битрикс.

8. Текстовый поиск и исправление запросов

Посетитель вводит запрос и нажимает кнопку «Найти». Клиент обращается к серверному действию bussol:smartsearch.search.query, передавая текст, сайт, выбранную область и признак голосового ввода.

Как обрабатывается запрос

  1. Нормализация текста (в том числе раскладки и смешанной кириллицы/латиницы).
  2. Выбор настроенных инфоблоков и, если указано, одного инфоблока из списка областей.
  3. Поиск соответствий по нормализованному индексу; при необходимости — приближённый поиск по ошибкам.
  4. Проверка активности элементов, актуальности дат и прав доступа при получении карточек.
  5. Если индекс не дал результат — резервный поиск по элементам инфоблоков.
Пример запросаЧто может помочь
Название с опечаткойПриближённое сопоставление вариантов и расстояние Левенштейна.
Набор в неправильной раскладкеПеребор вариантов клавиатурной раскладки.
Артикул из русских и латинских символовНормализация и компактные формы строки.
Артикул, продиктованный голосомПреобразование произнесённых символов в строку с участием VoiceNormalizer.
Ограничения

Алгоритм не является генеративной ИИ-системой и не гарантирует исправление любого слова. Точность зависит от наполненности индекса, качества атрибутов и выбранных полей.

Сервер ограничивает длину текстового запроса до 200 символов. Если ввод короче установленного минимума, поисковая выдача не формируется.

9. Голосовой ввод: работа и ограничения

Кнопка с микрофоном показывается, если параметр «Разрешить голосовой ввод» включён. При её нажатии модуль запускает браузерное распознавание через Web Speech API.

  • Откройте страницу через HTTPS.
  • Разрешите сайту использование микрофона в настройках браузера.
  • Нажмите кнопку микрофона и произнесите название или артикул.
  • Проверьте текст, подставленный в строку; поиск запускается после распознавания.
Доступность и конфиденциальность

В браузере без Web Speech API кнопка сообщает об отсутствии поддержки. Аудио может обрабатываться сервисом конкретного браузера; сам SmartSearch не хранит аудиозапись, а использует итоговую текстовую строку.

Язык распознавания задаётся для сайта (по умолчанию ru-RU). Если распознавание не запускается, проверьте HTTPS, разрешение микрофона, версию браузера и настройки приватности.

10. Поиск по похожему изображению

Функция включается отдельно для каждого сайта. Для элементов индекса используется изображение DETAIL_PICTURE, а при его отсутствии — PREVIEW_PICTURE. У загружаемого файла и изображений каталога вычисляется компактный хеш dHash.

Настройка и использование

  1. Убедитесь, что на сервере установлено расширение GD.
  2. В параметрах нужного сайта включите «Поиск похожих изображений».
  3. Запустите полную переиндексацию, чтобы сформировать хеши изображений элементов.
  4. Откройте страницу с компонентом, нажмите иконку изображения и выберите файл.
  5. Просмотрите выдачу; при слишком широкой области выберите более узкий инфоблок.
ОграничениеЗначение
Допустимые типы изображенияJPEG, PNG, WebP, GIF — по фактическому содержимому файла.
Максимальный размер файла10 МБ.
Максимальное количество пикселей8 000 000; по каждой стороне не более 8000 пикселей.
Лимит элементов для сравненияДо 5000 кандидатов в выбранной области; при превышении выводится просьба сузить область.
Таймаут клиентского запроса30 секунд.
Защита отправкиHTTP POST и токен сессии Битрикс (CSRF).
Характер совпадений

dHash ищет визуально похожие изображения и не распознаёт объекты семантически. Лучшие результаты ожидаются для похожих ракурсов, композиций и изображений, а не для любых фотографий одного предмета.

Браузер передаёт изображение вашему сайту; сторонний облачный API модулем для этого действия не вызывается.

11. Индексация и обновление данных

Модуль создаёт служебную таблицу b_bussol_smartsearch_index. В ней для связки сайта и элемента сохраняются три текстовых представления поиска, ID инфоблока, ID элемента, опциональный хеш изображения и время обновления.

Автоматическая актуализация

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

Полная переиндексация

  1. Сохраните настройки поиска на вкладке сайта.
  2. Нажмите «Запустить переиндексацию сайта».
  3. Битрикс ставит агент с обработкой до 100 элементов за проход; агент продолжает работу до завершения.
  4. Проверьте, что система агентов на сайте реально выполняется, и протестируйте поиск после окончания процесса.
Когда запускать заново

Полная переиндексация необходима после массового импорта и значимых изменений набора индексируемых полей, свойств, инфоблоков или режима изображения. Для большого каталога закладывайте время на обработку очереди агентов.

При полной перестройке индекс соответствующего сайта очищается и формируется заново. Поэтому на загруженном проекте лучше планировать переиндексацию на время низкой активности.

12. Интерфейс выдачи и внешний вид

В составе стандартного шаблона доступны поисковая строка, кнопка «Найти», опциональный список областей, микрофон, выбор файла и контейнер AJAX-результатов.

Элемент интерфейсаОсобенности
Список областейСодержит только выбранные активные инфоблоки текущего сайта; при одном инфоблоке может скрываться.
Карточка результатаНазвание, ссылка на детальную страницу, миниатюра при наличии изображения.
Коррекция запросаМожет отображаться подсказка «Возможно, вы искали…». Вычисляется только по доступным посетителю элементам.
Нет результатовВыводится понятное сообщение без технических подробностей.
ЦветаФон кнопки, цвет её надписи и рамка поля задаются HEX-цветами отдельно по сайтам.

Настройка палитры производится на вкладке сайта и проверяется форматом #RRGGBB. В шаблоне значения подключаются через CSS-переменные --bussol-submit-bg, --bussol-submit-color, --bussol-input-border.

Интеграция в дизайн

Для изменения компоновки, отступов и типографики создавайте собственный шаблон компонента. Изменение файлов непосредственно внутри модуля затруднит последующие обновления.

13. Техническая архитектура и интеграция

УзелФайл / механизм
Модульbussol.smartsearch/include.php, автозагрузка классов D7.
Компонентbussol:smartsearch и шаблон .default.
КонтроллерBussol\SmartSearch\Controller\Search.
Текстовый поискSearchService, QueryNormalizer, VariantGenerator, LegacyIblockSearch.
Голосовая нормализацияVoiceNormalizer.
ИзображенияImageHasher: вычисление/сравнение dHash.
ИндексSearchIndexTable, таблица b_bussol_smartsearch_index.
ИндексацияIndexer, ReindexAgent и события элементов инфоблоков.

Публичные действия

bussol:smartsearch.search.query
bussol:smartsearch.search.image

Текстовый поиск выполняется посредством AJAX с проверкой входных параметров; изображение отправляется POST + FormData с токеном CSRF. Оба действия возвращают ответ, который обрабатывается стандартным JavaScript шаблона.

Структура успешного результата

{
  "query": "насос",
  "correctedQuery": null,
  "source": "index",
  "count": 1,
  "items": [
    { "id": 123, "iblockId": 7, "name": "Название",
      "url": "/catalog/item/", "picture": "", "score": 100 }
  ]
}
Пример структуры

JSON приведён как иллюстрация полей, а не как фактический результат поиска. Значения source могут различаться: индекс, приближённый индекс, резервный поиск и служебные состояния.

14. Безопасность, доступ и конфиденциальность

  • Данные поиска формируются по выбранным администратором инфоблокам; перед выдачей результатов выполняется проверка активности, дат и прав доступа к элементам.
  • Для загруженного изображения проверяются сам факт загрузки, MIME-подобная сигнатура изображения, размер файла и разрешение перед декодированием.
  • Для загрузки файла применяется CSRF-проверка Битрикс, запрос ограничен POST.
  • В шаблоне выдачи ссылки ограничены схемами http: и https:; текст результата вставляется безопасными DOM-операциями.
  • Подсказки исправления формируются с учётом реально доступных посетителю элементов.
  • В административной форме используется проверка сессии; вводимые настройки проходят проверку допустимых типов, полей и инфоблоков.
Публичная форма и авторизация

Текстовый поиск рассчитан на работу без обязательной авторизации. Не индексируйте чувствительные свойства и данные в публично доступных инфоблоках. Правила доступа Битрикс и конфигурация сайта остаются частью модели безопасности.

Версия 2.0.10 прошла локальную проверку кода с выпуском отдельного security-journal.json; она не заменяет независимую проверку Marketplace и проверку на вашей конфигурации сервера.

Загруженные пользователем изображения используются для сопоставления хешей. Голосовое аудио не хранится модулем; возможная передача аудио стороннему сервису зависит от движка браузера.

15. Диагностика: типичные вопросы

СимптомЧто проверить
Раздел Bussol не виденУстановлен ли модуль, обновлены ли обёртки в /bitrix/admin и файлы темы админки, есть ли права на модуль. Обновите админку и её кэш.
Форма не появиласьВключён ли поиск для нужного сайта, выбран ли корректный SITE_ID, подключён ли iblock.
Поиск возвращает пустой списокВыбраны ли инфоблоки, поля и свойства, выполнена ли переиндексация, активен ли элемент, разрешён ли просмотр посетителю.
Слишком короткий запросПроверьте установленную минимальную длину в настройках сайта.
Не работает микрофонHTTPS, поддержку Web Speech API, доступ браузера к микрофону и выбранный язык.
Не запускается поиск картинкиВключена ли функция, доступен ли GD, разрешён ли файл, не превышены ли 10 МБ / 8 млн пикселей, действителен ли сеанс Битрикс.
Область изображения слишком великаСузьте поиск до отдельного инфоблока; текущий лимит — 5000 элементов для сравнения.
Ошибка AJAX / таймаутДоступен ли /bitrix/services/main/ajax.php, не блокирует ли запрос WAF, есть ли ошибки PHP и сетевые ошибки в DevTools.
Старые значения после изменения настроекПовторите полную переиндексацию и проверьте выполнение агентов Битрикс.
Цвет не обновилсяПроверьте вкладку сайта, сохранённый HEX-цвет и кэш компонента/браузера.
План диагностики

Проверьте настройку конкретного сайта → индексацию → права доступа к элементу → ответ AJAX в Network → журналы PHP/Битрикс. Такой порядок быстрее изолирует источник ошибки.

При обращении в техническую поддержку полезно приложить версию модуля, идентификатор сайта, PHP-версию, версию Битрикс и обезличенный ответ AJAX-запроса.

16. Чек-лист приёмки и эксплуатации

  • Модуль bussol.smartsearch версии 2.0.10 установлен и корректно отображается в списке модулей.
  • В левом меню открывается Bussol → Умный поиск → Настройки.
  • Для каждого сайта заданы требуемые инфоблоки, поля и свойства; сохранение настроек проходит без ошибок.
  • Переиндексация запущена, агент завершает обработку элементов.
  • Обычный поиск находит известный активный элемент по названию и артикулу.
  • Проверено поведение для опечаток, неверной раскладки и короткого запроса.
  • В гостевой сессии не видны элементы, к которым отсутствует доступ.
  • Проверена форма на мобильном устройстве и работа AJAX в композитном режиме.
  • Если включён голосовой ввод — проверены HTTPS и разрешение микрофона.
  • Если включён поиск изображений — есть GD, хеши после переиндексации, проверены ограничения файла и узкая область поиска.
  • Цвета кнопки и поля соответствуют оформлению каждого сайта.
  • Создана резервная копия перед обновлением; сохранена проверенная конфигурация и журнал изменений.
Результат

После выполнения чек-листа модуль готов к функциональной приёмке на конкретном сайте. Для высоконагруженных каталогов дополнительно проверяйте время ответа, объём индекса и расписание агентов.

Версия: 2.0.10 · ID: bussol.smartsearch · Документ: техническая и пользовательская документация.