Сравнение с Elasticsearch

Сопоставление каталогов на сотни тысяч позиций: Интеграм вместо Elasticsearch и кода

Elasticsearch

Обложка статьи: Сопоставление каталогов без Elasticsearch

Сопоставить две номенклатуры, где один товар назван разными словами и имеет разные артикулы, обычно поручают Elasticsearch, алгоритмам нечёткого поиска и программистам. В Интеграме это собирается на конструкторе: токенизация наименований, пересечение токенов, многопоточный автоподбор и доуточнение шорт-листа языковой моделью — без кода.

Сопоставление каталогов — частая задача поставщиков, дистрибьюторов и закупок. Есть свой каталог (SKU) и каталог контрагента (RFP, request for proposal): по сути одни и те же позиции, но описанные другими словами и с несовпадающими внутренними артикулами. В одном файле 28 тысяч записей, в другом 22 тысячи, в полном объёме счёт идёт на сотни тысяч. Классическое решение — поисковый движок вроде Elasticsearch с нечётким поиском, обвязка на стороне разработчика и ручное сопровождение алгоритмов. Это работает, но требует инфраструктуры, кода и людей, которые всё это поддерживают.

Контекст

Менеджер получает прайс контрагента и должен к каждой строке подобрать свой артикул-аналог. Типичные симптомы ручного и «движкового» подхода:

  • сопоставление руками по 28 тысячам строк растягивается на недели и ошибается;
  • под нечёткий поиск нужно развернуть и настроить Elasticsearch, написать пайплайны и код;
  • любая правка логики под новый тип товара превращается в задачу разработчику и переиндексацию;
  • результат всё равно надо отдельно собрать и выгрузить во внешнюю систему.

Как это решает Интеграм

В Интеграме весь цикл собран на конструкторе — таблицами и запросами, без программирования:

  1. Каталоги SKU и RFP загружаются из Excel по сохранённой настройке (порядка 500–1000 записей в секунду).
  2. Запрос токенизации разбивает наименования на слова и наполняет общий справочник токенов для обеих таблиц.
  3. Рабочее место сопоставления по пересечению токенов подбирает кандидатов; совпадение марки, модели и типа подсвечивается.
  4. Кнопка массового подбора запускает автоподбор в несколько потоков (~120 пар/мин) и пишет в RFP лучший артикул и альтернативы.
  5. Результат выгружается в Excel или отдаётся через JSON API; при необходимости шорт-лист кандидатов доуточняет языковая модель.