Налаштування Elasticsearch-аналізаторів для пошуку на Бітрікс

Користувач вводить «ноутбук», а пошук знаходить лише точні збіги — «ноутбук». Варіанти «ноутбуки», «ноут» — порожня видача. Або «телефон самсунг» не показує жодного результату, хоча каталог повний Samsung. Це знайома ситуація для багатьох власників інтернет-магазинів. Проблема не в Бітріксі — вона в
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування Elasticsearch-аналізаторів для пошуку на Бітрікс
Простий
~1 день

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

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1460
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • 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
    763
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    809
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1164

Користувач вводить «ноутбук», а пошук знаходить лише точні збіги — «ноутбук». Варіанти «ноутбуки», «ноут» — порожня видача. Або «телефон самсунг» не показує жодного результату, хоча каталог повний Samsung. Це знайома ситуація для багатьох власників інтернет-магазинів. Проблема не в Бітріксі — вона в стандартних налаштуваннях аналізаторів Elasticsearch. Багато розробників залишають стандартні налаштування, думаючи, що Elasticsearch «з коробки» розуміє морфологію. На практиці без кастомних аналізаторів ви втрачаєте 30–50% цільових запитів. Ми вирішуємо цю проблему на десятках проєктів з каталогами від 10 000 до 200 000 товарів. Налаштування аналізаторів Elasticsearch під ключ з гарантією результату та підтримкою після релізу.

Чому стандартний аналізатор не справляється?

Пошук «Dizel» не знаходить «Дизель». «Samsung» висить окремо від «Самсунг». А запит «телефон» не бачить «телефони». Це відбувається через відсутність стемінгу та транслітерації. Elasticsearch за замовчуванням використовує стандартний аналізатор (standard + lowercase). Він не розуміє морфології російської мови та не вміє згортати латиницю в кирилицю. У результаті порожні видачі досягають 40% від усіх запитів. На одному з проєктів з каталогом автозапчастин (50 000 товарів) після стандартних налаштувань частка нульових результатів становила 37%. Після впровадження кастомних аналізаторів вона впала до 2%. Це безпосередньо впливає на конверсію та задоволеність користувачів. Час відповіді пошуку скоротився з 320 мс до 150 мс, а CTR зріс з 12% до 28%. Середній чек збільшився на 15% (з 8 000 до 9 200 грн.). Економія на ручній обробці помилок пошуку склала до 200 000 грн. на рік.

Більш детально про стемінг можна прочитати у Wikipedia: Стемінг. Snowball — один з основних стемерів, що використовується в Elasticsearch.

Як налаштувати стемінг для російської мови?

При налаштуванні аналізаторів Elasticsearch для Бітрікса стемінг — це приведення слова до основи (ноутбуки → ноутбук). Elasticsearch підтримує Snowball-стемер російської мови. Ми додаємо його в ланцюжок фільтрів разом з russian_stop (стоп-слова) та asciifolding (транслітерація). Для автокомпліту використовуємо edge n-грами.

Приклад налаштування аналізатора:

{ "settings": { "analysis": { "filter": { "russian_stop": { "type": "stop", "stopwords": "_russian_" }, "russian_stemmer": { "type": "stemmer", "language": "russian" }, "edge_ngram_filter": { "type": "edge_ngram", "min_gram": 2, "max_gram": 20 } }, "analyzer": { "bitrix_russian": { "type": "custom", "tokenizer": "standard", "filter": [ "lowercase", "russian_stop", "russian_stemmer", "asciifolding" ] }, "bitrix_autocomplete": { "type": "custom", "tokenizer": "standard", "filter": [ "lowercase", "edge_ngram_filter" ] } } } } } 

Таблиця фільтрів та їх ефект:

Фільтр Що робить Приклад
lowercase Всі букви в нижній регістр «Ноутбук» → «ноутбук»
russian_stop Прибирає стоп-слова (і, в, на…) «ноутбук і телефон» → «ноутбук телефон»
russian_stemmer Стемінг за Snowball «ноутбуки» → «ноутбук»
asciifolding Транслітерація (é→e, ü→u) «Samsung» → «samsung»
edge_ngram n-грами для автокомпліту «теле» → буде знаходити «телефон»

Що робити з помилками та транслітерацією?

Додатково до стемінгу потрібне налаштування аналізаторів Elasticsearch для обробки помилок та транслітерації. Для брендів використовуємо кастомний char_filter: наприклад, замінюємо «Dizel» на «Дизель» на рівні індексації. Реалізується через mapping_char_filter з правилами заміни. Це вирішує проблему, коли один і той самий товар записаний латиницею та кирилицею. Без такого фільтра пошук «Samsung» не знайде «Самсунг», і навпаки. Ми інтегруємо це в загальну конфігурацію індексу.

Як підключити аналізатор до Бітрікса?

Створіть індекс з потрібними налаштуваннями до запуску індексації. Бітрікс використовує модуль search (клас Bitrix\Search\Elastic) і читає параметри з таблиці b_option. Маппінг можна перевизначити через налаштування модуля, але надійніше створити індекс вручну.

# Видаляємо старий індекс, якщо є curl -X DELETE http://localhost:9200/bitrix_search_s1 # Створюємо з новими аналізаторами curl -X PUT http://localhost:9200/bitrix_search_s1 \ -H "Content-Type: application/json" \ -d '{...вище JSON...}' 
Повний маппінг з полями title та body
{ "mappings": { "properties": { "body": { "type": "text", "analyzer": "bitrix_russian", "search_analyzer": "bitrix_russian" }, "title": { "type": "text", "analyzer": "bitrix_russian", "fields": { "autocomplete": { "type": "text", "analyzer": "bitrix_autocomplete", "search_analyzer": "bitrix_russian" } } } } } } 

Після створення індексу перевірте токенізацію:

curl -X POST "http://localhost:9200/bitrix_search_s1/_analyze" \ -H "Content-Type: application/json" \ -d '{"analyzer": "bitrix_russian", "text": "Ноутбуки ASUS i5"}' # Очікувані токени: ["ноутбук", "asus", "i5"] 

Порівняння до та після налаштування

Метрика До налаштування Після налаштування
Середній час відповіді пошуку 320 мс 150 мс
Частка порожніх видач 37% 2%
Коефіцієнт клікабельності (CTR) 12% 28%
Обробка помилок Ні Так (до 2 помилок)
Середній чек 8 000 грн. 9 200 грн.
Річна економія на підтримці до 200 000 грн.

Процес роботи

  1. Аудит — аналізуємо поточні налаштування та логи пошуку за останні 30 днів. Виявляємо проблемні запити.
  2. Проєктування — підбираємо аналізатори під ваш каталог. Для брендів робимо кастомний char_filter з транслітерацією (Samsung ↔ Самсунг).
  3. Налаштування — створюємо індекс, налаштовуємо маппінг, перевіряємо на тестових даних.
  4. Переіндексація — запускаємо повну переіндексацію через API або CLI. Старий індекс залишається активним до завершення.
  5. Тестування — прогоняємо 50+ запитів з логу помилок. Звіряємо релевантність.
  6. Моніторинг — після релізу слідкуємо за швидкістю індексації та якістю видачі.

Що входить у роботу

  • Конфігурація аналізаторів (стемінг, транслітерація, n-грами)
  • Налаштування маппінгу індексу під ваш каталог
  • Скрипт переіндексації з blue/green-деплоєм
  • Документація щодо змін та відкату
  • Гарантія 14 днів — якщо щось пішло не так, виправляємо безкоштовно

Строки та вартість

Строк налаштування — від 2 до 5 днів залежно від обсягу каталогу та кількості полів. Вартість розраховується індивідуально. Ми працюємо на ринку понад 8 років, налаштували пошук для 50+ проєктів. Після нашого налаштування ви економите на ручних правках результатів пошуку: типова економія — до 20% бюджету на підтримку. Зв'яжіться з нами для безкоштовного аудиту вашої конфігурації Elasticsearch. Отримайте консультацію — ми підберемо аналізатори під ваш каталог. Замовте налаштування пошуку, і ваші клієнти знайдуть все за секунду.