Поиск по синонимам: PostgreSQL, Elasticsearch, Meilisearch

Пользователь вводит 'ноутбук', а в каталоге товары с 'лэптоп' и 'notebook'. Без синонимов поиск теряет до 30% релевантных результатов — пользователь уходит к конкурентам. Мы настраиваем поиск по синонимам под ключ: от анализа словаря до деплоя и создания админки для управления. За время работы реали

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Поиск по синонимам: PostgreSQL, Elasticsearch, Meilisearch
Средний
~2-3 дня

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

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

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1419
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1287
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    983
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1246
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    983
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    998

Пользователь вводит 'ноутбук', а в каталоге товары с 'лэптоп' и 'notebook'. Без синонимов поиск теряет до 30% релевантных результатов — пользователь уходит к конкурентам. Мы настраиваем поиск по синонимам под ключ: от анализа словаря до деплоя и создания админки для управления. За время работы реализовали 15+ проектов с каталогами до 100 000 товаров, конверсия увеличилась в среднем на 15%. Окупаемость — 2–3 месяца.

Как синонимы влияют на релевантность поиска?

Поиск с синонимами увеличивает конверсию за счёт того, что пользователь находит нужный товар при любом запросе. Например, в магазине электроники клиент вводит 'наушники', а система находит 'headphones' и 'гарнитура'. Мы гарантируем максимальное покрытие каталога. Кейс: магазин бытовой техники с 80 000 товаров после внедрения синонимов увеличил конверсию с 3.2% до 4.8% (рост 50%).

Настройка синонимов в PostgreSQL

PostgreSQL FTS поддерживает thesaurus dictionary — файл с правилами замены слов при индексировании. Создаём файл thesaurus_ru.ths:

ноутбук лэптоп notebook : ноутбук смартфон телефон мобильник : смартфон наушники headphones : наушники 

Затем настраиваем конфигурацию поиска:

CREATE TEXT SEARCH DICTIONARY thesaurus_ru ( TEMPLATE = thesaurus, DictFile = thesaurus_ru, Dictionary = russian_ispell ); CREATE TEXT SEARCH CONFIGURATION search_ru (COPY = russian); ALTER TEXT SEARCH CONFIGURATION search_ru ALTER MAPPING FOR asciiword, word, numword WITH thesaurus_ru, russian_stem; 

После этого to_tsvector('search_ru', 'лэптоп Dell') вернёт 'ноутбук':1 'dell':2. Важно: при добавлении нового синонима нужно переиндексировать данные — это единственный минус подхода. Для статичных каталогов (например, магазин автозапчастей на 50 000 товаров) переиндексация занимает около 10 минут.

Настройка синонимов в Elasticsearch

Elasticsearch обрабатывает синонимы на лету — как при индексации, так и при поиске. Используем synonym token filter:

PUT /products { "settings": { "analysis": { "filter": { "synonym_ru": { "type": "synonym", "synonyms_path": "synonyms_ru.txt", "updateable": true }, "russian_stemmer": { "type": "stemmer", "language": "russian" } }, "analyzer": { "ru_with_synonyms": { "tokenizer": "standard", "filter": ["lowercase", "russian_stemmer", "synonym_ru"] } } } } } 

С "updateable": true синонимы можно обновить без переиндексации через API: POST /products/_reload_search_analyzers. Для многословных синонимов (например, 'стиральная машина' ↔ 'стиралка') используем synonym_graph — он сохраняет позиции токенов при фразовом поиске.

Meilisearch: простые синонимы

Meilisearch поддерживает синонимы из коробки — просто передайте словарь через API:

import meilisearch client = meilisearch.Client('http://localhost:7700', 'masterKey') index = client.index('products') index.update_synonyms({ 'ноутбук': ['лэптоп', 'notebook'], 'лэптоп': ['ноутбук', 'notebook'], }) 

Никакой переиндексации — изменения применяются мгновенно. Идеально для проектов, где словарь часто меняется.

Почему Elasticsearch лучше подходит для динамических словарей?

Elasticsearch позволяет обновлять синонимы без переиндексации, поддерживает многословные синонимы и обладает высокой производительностью при больших нагрузках. Для интернет-магазинов с частыми изменениями ассортимента это оптимальный выбор.

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

Параметр PostgreSQL Elasticsearch Meilisearch
Тип синонимов Индексация (статичные) Индексация и поиск (динамические) Поиск (динамические)
Переиндексация при изменении Требуется Не требуется Не требуется
Мультисловные синонимы Нет Да (через synonym_graph) Да
Управление через API Нет Частично Да
Производительность при 1000+ групп Средняя Высокая Высокая

Типичные ошибки при настройке синонимов

Ошибка Последствия Решение
Отсутствие учёта словоформ Частичные совпадения пропускаются Использовать стеммер/лемматизатор
Слишком много синонимов Деградация скорости Ограничить 1000 групп
Не учтена многозначность Ложные срабатывания Использовать контекстные синонимы

Что выбрать для вашего проекта

Выбор движка зависит от размера каталога, частоты обновления словаря и бюджета на инфраструктуру. Если каталог статичен и не превышает 50 000 товаров — PostgreSQL будет достаточным. Для крупных интернет-магазинов с частыми сменами ассортимента лучше подходит Elasticsearch или Meilisearch. Мы помогаем подобрать оптимальное решение: анализируем нагрузку, тестируем скорость поиска и рассчитываем стоимость владения.

Процесс работы

  1. Анализ поисковых запросов и каталога — выявление частых синонимов и семантических связей.
  2. Составление словаря синонимов с учётом бизнес-терминологии и типовых опечаток.
  3. Настройка выбранного поискового движка (PostgreSQL/Elasticsearch/Meilisearch).
  4. Разработка API для управления словарём (admin-панель с возможностью загрузки CSV).
  5. Тестирование на реальных запросах — проверка релевантности и времени ответа.
  6. Деплой и документация для контент-менеджеров.

Что входит в результат

  • Анализ поисковых запросов и каталога
  • Составление словаря синонимов (импорт/экспорт)
  • Конфигурация поискового движка
  • API для управления синонимами и admin-панель
  • Тестирование на реальных запросах
  • Документация и обучение контент-менеджеров
  • Поддержка при запуске

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

PostgreSQL thesaurus — от 1 дня. Elasticsearch с synonym_graph и админкой — 1–2 дня. Meilisearch — полдня. Стоимость рассчитывается индивидуально в зависимости от объёма каталога и сложности словаря. Экономия времени на поиске и рост конверсии окупают настройку за 2–3 месяца.

Свяжитесь с нами для аудита вашего поиска — мы подберём оптимальное решение и настроим словарь синонимов за 1–2 дня. Закажите настройку поиска по синонимам и получите консультацию по оптимизации поиска. Узнайте, как синонимы повысят конверсию вашего магазина.