Руководство составлено по содержимому поставляемого архива. Для штатного внедрения дополнительно проверяйте настройки, права и производительность на вашем сайте.
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. |
| PHP | PHP 7.4 или новее согласно README модуля. Требуется расширение mbstring. |
| MySQL | Доступ к базе данных, достаточный для создания таблицы b_bussol_smartsearch_index. |
| Изображения | Расширение PHP GD для обработки изображений при включённом визуальном поиске. |
| Голосовой ввод | Поддержка Web Speech API браузером, HTTPS и разрешение пользователя на использование микрофона. |
| Фоновые операции | Настроенная работа агентов Битрикс для полной переиндексации. |
Web Speech API доступен не во всех браузерах и может использовать внешний сервис распознавания речи самого браузера. Модуль не гарантирует офлайн-распознавание; пользователь может ввести текст вручную.
Поиск по изображениям не требует передачи загружаемого изображения стороннему API: dHash рассчитывается внутри PHP-приложения.
4. Установка и первое включение
Новая установка
- Распакуйте дистрибутив, убедитесь, что каталог модуля называется
bussol.smartsearch. - Разместите каталог в
/local/modules/bussol.smartsearch/(рекомендуемый вариант) либо/bitrix/modules/bussol.smartsearch/. - Войдите в админку Битрикс с правами администратора, установите модуль через раздел установленных модулей.
- В левом меню откройте Bussol → Умный поиск → Настройки. Если раздел не появился после обновления — обновите интерфейс админки с очисткой её кэша.
- На вкладке нужного сайта включите модуль, выберите инфоблоки и поисковые поля, сохраните изменения.
- Запустите полную переиндексацию для выбранного сайта и дождитесь выполнения агента.
- Разместите компонент на странице или в шаблоне сайта и выполните контрольные запросы.
Установщик создаёт отдельную индексную таблицу и копирует компонент и админ-файлы. На боевом проекте установка и обновление должны выполняться с резервной копией и возможностью отката.
Обновление с 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_SCOPE | Y/N: показывать выпадающий выбор области; он выводится, только если доступно более одного инфоблока. |
CACHE_TIME | Срок кэширования оболочки компонента в секундах, по умолчанию 3600. |
HTML формы кэшируется штатным способом Битрикс, а результаты загружаются через D7-контроллер без перезагрузки страницы. Для динамических результатов не требуется вручную выключать кэш страницы.
Шаблон по умолчанию располагается в install/components/bussol/smartsearch/templates/.default/. При оформлении сайта рекомендуется переопределять шаблон штатными средствами Битрикс.
8. Текстовый поиск и исправление запросов
Посетитель вводит запрос и нажимает кнопку «Найти». Клиент обращается к серверному действию bussol:smartsearch.search.query, передавая текст, сайт, выбранную область и признак голосового ввода.
Как обрабатывается запрос
- Нормализация текста (в том числе раскладки и смешанной кириллицы/латиницы).
- Выбор настроенных инфоблоков и, если указано, одного инфоблока из списка областей.
- Поиск соответствий по нормализованному индексу; при необходимости — приближённый поиск по ошибкам.
- Проверка активности элементов, актуальности дат и прав доступа при получении карточек.
- Если индекс не дал результат — резервный поиск по элементам инфоблоков.
| Пример запроса | Что может помочь |
|---|---|
| Название с опечаткой | Приближённое сопоставление вариантов и расстояние Левенштейна. |
| Набор в неправильной раскладке | Перебор вариантов клавиатурной раскладки. |
| Артикул из русских и латинских символов | Нормализация и компактные формы строки. |
| Артикул, продиктованный голосом | Преобразование произнесённых символов в строку с участием VoiceNormalizer. |
Алгоритм не является генеративной ИИ-системой и не гарантирует исправление любого слова. Точность зависит от наполненности индекса, качества атрибутов и выбранных полей.
Сервер ограничивает длину текстового запроса до 200 символов. Если ввод короче установленного минимума, поисковая выдача не формируется.
9. Голосовой ввод: работа и ограничения
Кнопка с микрофоном показывается, если параметр «Разрешить голосовой ввод» включён. При её нажатии модуль запускает браузерное распознавание через Web Speech API.
- Откройте страницу через HTTPS.
- Разрешите сайту использование микрофона в настройках браузера.
- Нажмите кнопку микрофона и произнесите название или артикул.
- Проверьте текст, подставленный в строку; поиск запускается после распознавания.
В браузере без Web Speech API кнопка сообщает об отсутствии поддержки. Аудио может обрабатываться сервисом конкретного браузера; сам SmartSearch не хранит аудиозапись, а использует итоговую текстовую строку.
Язык распознавания задаётся для сайта (по умолчанию ru-RU). Если распознавание не запускается, проверьте HTTPS, разрешение микрофона, версию браузера и настройки приватности.
10. Поиск по похожему изображению
Функция включается отдельно для каждого сайта. Для элементов индекса используется изображение DETAIL_PICTURE, а при его отсутствии — PREVIEW_PICTURE. У загружаемого файла и изображений каталога вычисляется компактный хеш dHash.
Настройка и использование
- Убедитесь, что на сервере установлено расширение GD.
- В параметрах нужного сайта включите «Поиск похожих изображений».
- Запустите полную переиндексацию, чтобы сформировать хеши изображений элементов.
- Откройте страницу с компонентом, нажмите иконку изображения и выберите файл.
- Просмотрите выдачу; при слишком широкой области выберите более узкий инфоблок.
| Ограничение | Значение |
|---|---|
| Допустимые типы изображения | JPEG, PNG, WebP, GIF — по фактическому содержимому файла. |
| Максимальный размер файла | 10 МБ. |
| Максимальное количество пикселей | 8 000 000; по каждой стороне не более 8000 пикселей. |
| Лимит элементов для сравнения | До 5000 кандидатов в выбранной области; при превышении выводится просьба сузить область. |
| Таймаут клиентского запроса | 30 секунд. |
| Защита отправки | HTTP POST и токен сессии Битрикс (CSRF). |
dHash ищет визуально похожие изображения и не распознаёт объекты семантически. Лучшие результаты ожидаются для похожих ракурсов, композиций и изображений, а не для любых фотографий одного предмета.
Браузер передаёт изображение вашему сайту; сторонний облачный API модулем для этого действия не вызывается.
11. Индексация и обновление данных
Модуль создаёт служебную таблицу b_bussol_smartsearch_index. В ней для связки сайта и элемента сохраняются три текстовых представления поиска, ID инфоблока, ID элемента, опциональный хеш изображения и время обновления.
Автоматическая актуализация
После добавления, обновления и удаления элементов инфоблока вызываются обработчики модуля, поддерживающие соответствие индекса содержимому каталога. Неактивные элементы удаляются из индекса либо не добавляются в него.
Полная переиндексация
- Сохраните настройки поиска на вкладке сайта.
- Нажмите «Запустить переиндексацию сайта».
- Битрикс ставит агент с обработкой до 100 элементов за проход; агент продолжает работу до завершения.
- Проверьте, что система агентов на сайте реально выполняется, и протестируйте поиск после окончания процесса.
Полная переиндексация необходима после массового импорта и значимых изменений набора индексируемых полей, свойств, инфоблоков или режима изображения. Для большого каталога закладывайте время на обработку очереди агентов.
При полной перестройке индекс соответствующего сайта очищается и формируется заново. Поэтому на загруженном проекте лучше планировать переиндексацию на время низкой активности.
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 · Документ: техническая и пользовательская документация.