Настройка автодополнения поиска 1С-Битрикс
Автодополнение поиска — предложение завершить введённый запрос до полного поискового термина — отличается от подсказок: подсказки показывают конкретные товары или страницы, автодополнение предлагает варианты запросов. В Битрикс эти понятия часто смешивают, и реализация зависит от того, какой именно функционал нужен.
Два сценария автодополнения
Сценарий 1: Автодополнение по поисковому индексу
Пользователь вводит «красн», система предлагает: «красные платья», «красные кроссовки», «красный диван». Источник — заголовки из b_search_content.
Сценарий 2: Автодополнение по истории запросов
Система предлагает популярные запросы других пользователей, совпадающие с введёнными символами. Источник — история поиска из b_search_user_trans (если включено ведение истории).
Стандартный компонент bitrix:search.suggest реализует сценарий 1. Сценарий 2 требует кастомной разработки.
Включение истории поиска
Настройки → Поиск → Настройки модуля → Сохранять историю поиска — включить.
История сохраняется в b_search_user_trans. Поля: SITE_ID, WORD (поисковый запрос), DATE_CHANGE, POPULARITY (количество повторений).
Реализация автодополнения по популярным запросам
AJAX-эндпоинт для автодополнения по истории:
// /local/ajax/search_autocomplete.php
require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php';
$query = trim($_GET['q']);
if (strlen($query) < 2) {
die(json_encode([]));
}
$result = \Bitrix\Main\Application::getConnection()->query(
"SELECT WORD, POPULARITY FROM b_search_user_trans
WHERE SITE_ID = '" . SITE_ID . "'
AND WORD LIKE '" . \Bitrix\Main\DB\MssqlConnection::ForSql($query) . "%'
ORDER BY POPULARITY DESC
LIMIT 10"
);
$suggestions = [];
while ($row = $result->fetch()) {
$suggestions[] = $row['WORD'];
}
echo json_encode($suggestions);
На фронтенде — стандартный input с обработчиком input события и дебаунсом 200–300 мс.
Сочетание подсказок и автодополнения
На практике наиболее удобный UX — комбинированный выпадающий список:
- Верхняя часть: 3–5 популярных запросов (автодополнение)
- Нижняя часть: 5–7 конкретных товаров (подсказки с картинками)
Это реализуется через два параллельных AJAX-запроса или через единый эндпоинт, возвращающий оба типа данных.
Кэширование
Запросы автодополнения выполняются при каждом вводе символа — важно кэшировать ответы. Варианты:
- Кэш Битрикс (
\Bitrix\Main\Data\Cache) с TTL 30–60 минут - Redis/Memcached для хранения популярных запросов
- Статические файлы для топ-100 популярных запросов (обновляются агентом раз в час)
Сроки выполнения
Настройка стандартного автодополнения через компонент подсказок — 1–2 часа. Кастомное автодополнение по истории запросов с комбинированным UI — 4–8 часов.







