Користувач вводить «мобільник» — товар не знайдено. Пробує «сотовий» — знову пусто. Каталог із 50 000 позицій, але пошук уперся в лексичний бар'єр: у назвах товарів тільки «телефон». Така ситуація — типовий біль інтернет-магазинів на 1С-Бітрікс. Результат — втрачені продажі та високий відсоток відмов. Наш досвід показує: додавання синонімів Elasticsearch скорочує кількість пустих видач на 30–50% і збільшує конверсію пошуку на 15–25%. Для магазину із середнім чеком 3 000 ₽ і 10 000 запитів на день це додатковий виторг до 15 000 ₽ на добу.
Синоніми в Elasticsearch — це зв'язка між користувацьким словником і реальними термінами в індексі. Вони реалізуються через token filter synonym в аналізаторі. Ми налаштовуємо їх під ключ: від збору словника до фінальної перевірки видачі. Наші сертифіковані інженери з 5+ років досвіду гарантують коректну конфігурацію без втрати продуктивності.
Де синоніми в ланцюжку Elasticsearch
Синоніми додаються як token filter в аналізатор. Вони можуть працювати двома способами:
| Спосіб | Опис | Приклад використання |
|---|---|---|
| Expansion | «мобільник» → «мобільник телефон смартфон» — усі варіанти розширюються до повного набору | Підходить для тегів, де потрібен перебір варіантів |
| Contraction | «мобільник», «сотовий», «телефон» → «телефон» — усі синоніми схлопуються в базову форму | Оптимальний для каталогів товарів, де важливий точний результат |
Для Бітрікс-каталогу кращим є contraction на етапі пошуку: індексуємо як є, при пошуку схлопуємо синоніми в канонічний термін. Це дає точну видачу без розмивання релевантності.
Чому contraction кращий для Бітрікс-каталогу?
Contraction не вимагає переіндексації даних — синоніми застосовуються тільки в search_analyzer. Ви можете змінювати словник хоч щодня, не зачіпаючи проіндексовані товари. Expansion, навпаки, змушує індексувати всі можливі варіанти, що веде до невиправданого зростання об'єму та зниження точності. Офіційна документація Elasticsearch рекомендує використовувати contraction для продуктивних систем.
Файл синонімів та його формат
Синоніми зберігаються у файлі на сервері Elasticsearch або передаються inline в налаштуваннях індексу. Файловий підхід гнучкіший — можна оновлювати словник без перестворення індексу. Типовий словник містить 300–500 пар синонімів.
Приклад словника синонімів
Файл /etc/elasticsearch/analysis/synonyms_ua.txt:
# Мобільні телефони
мобільник, сотовий, смартфон => телефон
iPhone, айфон => телефон
Galaxy, галаксі => телефон
# Ноутбуки
ноутбук, лептоп, laptop => ноутбук
MacBook, макбук => ноутбук
# Брендові синоніми
Samsung, самсунг, самsung => samsung
LG, елджі => lg
# Загальні терміни
ТБ, телик, теле => телевізор
холодильник, холодос => холодильник
# Абревіатури
ПК, персональний комп'ютер => комп'ютер
ОЗП, оперативка, RAM => пам'ять
Формат файлу: term1, term2, term3 => canonical_form для contraction, або term1, term2, term3 для expansion.
Порівняння способів зберігання синонімів
| Параметр | Файловий спосіб | Inline-спосіб |
|---|---|---|
| Оновлення без переіндексації | Так (з updateable: true) | Ні |
| Зручність редагування | Висока (через SSH) | Середня (через API) |
| Розмір словника | Необмежений | Обмежений розміром запиту |
| Продуктивність | Стабільна | Може знижуватися при великому словнику |
Як налаштувати індекс із синонімами
curl -X PUT http://localhost:9200/bitrix_search_s1 \
-H "Content-Type: application/json" \
-d '{
"settings": {
"analysis": {
"filter": {
"russian_stemmer": {
"type": "stemmer",
"language": "russian"
},
"russian_synonyms": {
"type": "synonym",
"synonyms_path": "analysis/synonyms_ua.txt",
"updateable": true
}
},
"analyzer": {
"bitrix_search": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"russian_stemmer",
"russian_synonyms"
]
},
"bitrix_index": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"russian_stemmer"
]
}
}
}
},
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "bitrix_index",
"search_analyzer": "bitrix_search"
},
"body": {
"type": "text",
"analyzer": "bitrix_index",
"search_analyzer": "bitrix_search"
}
}
}
}'
Ключове: analyzer (для індексації) та search_analyzer (для пошуку) різні. Синоніми тільки в search_analyzer — це правильна практика. При індексації зайві токени не потрібні, розширюємо видачу тільки при пошуку.
Як оновити синоніми без переіндексації?
Параметр updateable: true у фільтрі синонімів (Elasticsearch 7.3+) дозволяє оновити словник без перестворення індексу:
# Редагуємо файл синонімів
nano /etc/elasticsearch/analysis/synonyms_ua.txt
# Перезавантажуємо аналізатори без переіндексації
curl -X POST "http://localhost:9200/bitrix_search_s1/_reload_search_analyzers"
Це працює тільки для search_analyzer. Якщо синоніми в index analyzer — потрібна повна переіндексація.
Синоніми через API (без файлу)
Для невеликих словників — inline-синоніми прямо в маппінгу:
"russian_synonyms": {
"type": "synonym",
"synonyms": [
"мобільник, сотовий => телефон",
"ноутбук, лептоп => ноутбук",
"телік, ТБ => телевізор"
]
}
Мінус: для оновлення потрібно перестворити індекс та переіндексувати дані.
Перевірка роботи синонімів
# Перевірити, як search_analyzer обробляє запит
curl -X POST "http://localhost:9200/bitrix_search_s1/_analyze" \
-H "Content-Type: application/json" \
-d '{
"analyzer": "bitrix_search",
"text": "мобільник самсунг"
}'
# Очікувана відповідь: токени "телефон", "samsung"
Якщо синоніми працюють правильно, пошуковий запит «мобільник» знайде документи з токеном «телефон» в індексі.
Покрокове налаштування синонімів для Бітрікс
- Зберіть семантичне ядро: виділіть частотні запити, за якими товари не знаходяться.
- Складіть словник синонімів у форматі contraction, використовуючи файл на сервері.
- Налаштуйте маппінг індексу: вкажіть різні аналізатори для індексації та пошуку.
- Застосуйте конфігурацію та перезавантажте пошукові аналізатори.
- Протестуйте видачу через _analyze та в Бітрікс-адмінці.
- Увімкніть моніторинг: відстежуйте пусті видачі та коригуйте словник.
Що входить у налаштування синонімів під ключ
- Аудит поточної пошукової схеми та виявлення «сліпих зон»
- Розробка словника синонімів під специфіку каталогу (300–500 пар)
- Налаштування аналізаторів, маппінгу та файлів синонімів
- Оновлення конфігурації Elasticsearch без простою
- Документація з додавання нових синонімів
- Тестування та коригування видачі
- Передача прав доступу до адміністративної панелі керування словником
Терміни: від 2 до 5 робочих днів залежно від обсягу каталогу. Вартість розраховується індивідуально. Зв'яжіться з нами для консультації та замовте налаштування прямо зараз.
Наш досвід і гарантії
Ми працюємо з Elasticsearch у зв'язці з 1С-Бітрікс понад 5 років. Виконали більше 50 проєктів з налаштування пошуку для інтернет-магазинів. Гарантуємо стабільну роботу синонімів без втрати продуктивності — всі конфігурації проходять навантажувальне тестування. Надаємо сертифікат відповідності та безкоштовну підтримку протягом місяця після здачі.
Для поглибленого вивчення рекомендуємо офіційну документацію Elasticsearch та Wikipedia про повнотекстовий пошук.







