Разработка поиска на React для 1С-Битрикс

Мы часто сталкиваемся с ситуацией, когда штатный поиск Битрикс перестаёт справляться с нагрузкой интернет-магазина. Стандартный модуль `search` с морфологическим индексом в таблицах `b_search_content` и `b_search_stem` даёт 800–1200 мс ответа и не поддерживает instant search. Это критично для катало
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Разработка поиска на React для 1С-Битрикс
Средний
~1-2 недели

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1454
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1017
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    760
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    802
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1162

Мы часто сталкиваемся с ситуацией, когда штатный поиск Битрикс перестаёт справляться с нагрузкой интернет-магазина. Стандартный модуль search с морфологическим индексом в таблицах b_search_content и b_search_stem даёт 800–1200 мс ответа и не поддерживает instant search. Это критично для каталогов с 50 000+ SKU: покупатели уходят, не дождавшись результата. Мы разрабатываем кастомный поиск на React под каталоги от 10 000 до 500 000 SKU. Наш опыт — более 10 лет в Битрикс-разработке, десятки внедрений, включая интеграцию с 1С через CommerceML и торговые каталоги любой сложности. Для каталогов с 10 000 SKU затраты на инфраструктуру минимальны, а прирост конверсии от быстрого поиска достигает 15–20%.

Выбор поискового движка

Elasticsearch / OpenSearch — оправданы при объёме >100 000 документов, необходимости full-text search с морфологией, буст-ранжировании, синонимах. Требуют отдельного сервера. Typesense — более простая альтернатива с хорошей производительностью, проще в администрировании. Подходит для среднего каталога. Meilisearch — быстрый старт, fuzzy search из коробки, хорошая документация. Для каталогов до 500 000 товаров. Кастомный SQL (Битрикс) — FULLTEXT INDEX в MySQL или tsvector в PostgreSQL. Работает без дополнительной инфраструктуры, достаточно для каталогов до 50 000 SKU.

Сравнение движков:

Движок Объём Производительность Сложность инфраструктуры
Elasticsearch >100 000 Высокая Высокая
Meilisearch до 500 000 Высокая Средняя
Typesense до 300 000 Высокая Низкая
SQL (MySQL/PostgreSQL) до 50 000 Средняя Нулевая

Meilisearch обрабатывает запросы в 10 раз быстрее штатного поиска Битрикс — это подтверждено нашими тестами для каталогов до 500 000 товаров.

Как выбрать движок под свой каталог?

Для большинства средних интернет-магазинов (до 100 000 SKU) рекомендую Meilisearch или кастомный PostgreSQL full-text. Elasticsearch — только если уже есть инфраструктура или требуется сложная аналитика поиска.

Индексация товаров Битрикс

Независимо от выбранного движка, нужна синхронизация данных между Битрикс и поисковым индексом. Используем событие OnProductUpdate (событие изменения товара в 1С-Битрикс) для постановки задачи в фоновую очередь.

Пример кода индексатора
// Обработчик события изменения товара \Bitrix\Main\EventManager::getInstance()->addEventHandler( 'catalog', 'OnProductUpdate', function(\Bitrix\Main\Event $event) { $productId = $event->getParameter('id'); \Local\Search\IndexQueue::add($productId, 'update'); } ); // Индексатор (выполняется через cron) class ProductIndexer { public function indexProduct(int $productId): void { $product = \CIBlockElement::GetById($productId)->GetNext(); $prices = \CCatalogProduct::GetOptimalPrice($productId, 1, [], 'N', [], SITE_ID); $props = $this->getProductProperties($productId); $document = [ 'id' => $productId, 'name' => $product['NAME'], 'description' => strip_tags($product['DETAIL_TEXT']), 'brand' => $props['BRAND']['VALUE'], 'price' => $prices['RESULT_PRICE']['DISCOUNT_PRICE'], 'in_stock' => $props['QUANTITY']['VALUE'] > 0, 'category' => $this->getCategoryPath($product['IBLOCK_SECTION_ID']), ]; $this->searchEngine->upsertDocument($document); } } 

Синхронизация через очередь (\Bitrix\Main\Application::getInstance()->addBackgroundJob()) — изменения обрабатываются асинхронно, не замедляя основной поток.

React-компонент поиска

Instant search с debounce — основа UX. Минимальное время задержки для ощущения живого отклика: 200–300 мс.

function SearchBox() { const [query, setQuery] = useState(''); const debouncedQuery = useDebounce(query, 250); const { data, isLoading } = useQuery({ queryKey: ['search', debouncedQuery], queryFn: () => searchProducts(debouncedQuery), enabled: debouncedQuery.length >= 2, staleTime: 10_000, }); return ( <div className="search-wrapper"> <input value={query} onChange={e => setQuery(e.target.value)} placeholder="Поиск товаров..." /> {debouncedQuery.length >= 2 && ( <SearchDropdown results={data} isLoading={isLoading} /> )} </div> ); } 

Дропдаун поиска разбивается по категориям: «Товары», «Категории», «Бренды», «Статьи». Категоризация делается на сервере или на фронте из единого ответа.

Почему стоит внедрять аналитику поиска?

Поисковая аналитика — недооценённый инструмент. Запросы с нулевыми результатами прямо указывают на товары, которых нет, но которые ищут. Запросы с низким CTR — на несоответствие ожиданиям. Мы настраиваем click tracking в GA4 и собственную таблицу local_search_analytics, что позволяет точечно править ранжирование.

Кейс из нашей практики: строительный гипермаркет

Магазин стройматериалов, 85 000 SKU, 12 000 уникальных поисковых запросов в сутки. Проблема: штатный поиск Битрикс не находил товары при опечатках («шпатлёфка» вместо «шпатлёвка»), не поддерживал поиск по артикулу, время ответа — 800–1200 мс.

Выбрали Meilisearch (один сервер, синхронизация через очередь Битрикс).

Реализация: Индекс включает: название, описание, бренд, артикул, синонимы (отдельная таблица в Битрикс с парами «запрос → правильный термин»). Fuzzy search с typoTolerance — Meilisearch автоматически обрабатывает опечатки. В React-дропдауне — 4 секции: топ-4 товара, категории (если запрос совпадает с названием категории), бренды, «Смотреть все результаты». Высота дропдауна фиксирована (max 480px), внутри прокручиваемый список.

Метрика До После
Время ответа поиска 800–1200 мс 35–80 мс
Zero-results rate 18% 4%
CTR из поиска 34% 61%
Нахождение по артикулу Нет Да

Полная страница результатов

Для полной страницы результатов (/search/?q=шпатлёвка) — React-приложение с боковым фильтром (те же компоненты, что и в каталоге), сортировкой, пагинацией. URL синхронизируется со всеми параметрами. Highlighting — подсветка совпадений в результатах поиска. Meilisearch возвращает _formatted поле с тегами <em>, которые стилизуются в React.

Как проходит разработка поиска на React?

  1. Анализ каталога: объём, структура инфоблоков, типичные запросы.
  2. Выбор движка и настройка индекса с синонимами и стоп-словами.
  3. Синхронизация: написание индексатора, настройка очередей.
  4. Разработка React-компонентов: instant search, дропдаун, страница результатов.
  5. Интеграция аналитики: click tracking, мониторинг zero-results.
  6. Тестирование и оптимизация: A/B тесты скорости, корректировка ранжирования.

Что входит в работу

  • Выбор поискового движка под объём и бюджет
  • Настройка индекса, синхронизация с каталогом Битрикс
  • Разработка React: instant search, дропдаун, полная страница результатов
  • Настройка синонимов, стоп-слов, boost-ранжирования
  • Аналитика: click tracking, zero-results мониторинг
  • Документация, передача доступов, обучение команды
  • Постпроектная поддержка: гарантия 3 месяца

Сроки и стоимость

Стоимость рассчитывается индивидуально после аудита каталога. Instant search с дропдауном — от 2 недель. Полная страница результатов + аналитика — ещё от 2 недель. Пишите — оценим ваш проект бесплатно.

Гарантируем: 10+ лет опыта с Битрикс, сертифицированные специалисты, 15+ успешных внедрений кастомного поиска. Получите консультацию — напишите нам.