Сравнение с Elasticsearch
Сопоставление каталогов на сотни тысяч позиций: Интеграм вместо Elasticsearch и кода
Elasticsearch
Сопоставить две номенклатуры, где один товар назван разными словами и имеет разные артикулы, обычно поручают Elasticsearch, алгоритмам нечёткого поиска и программистам. В Интеграме это собирается на конструкторе: токенизация наименований, пересечение токенов, многопоточный автоподбор и доуточнение шорт-листа языковой моделью — без кода.
Сопоставление каталогов — частая задача поставщиков, дистрибьюторов и закупок. Есть свой каталог (SKU) и каталог контрагента (RFP, request for proposal): по сути одни и те же позиции, но описанные другими словами и с несовпадающими внутренними артикулами. В одном файле 28 тысяч записей, в другом 22 тысячи, в полном объёме счёт идёт на сотни тысяч. Классическое решение — поисковый движок вроде Elasticsearch с нечётким поиском, обвязка на стороне разработчика и ручное сопровождение алгоритмов. Это работает, но требует инфраструктуры, кода и людей, которые всё это поддерживают.
Контекст
Менеджер получает прайс контрагента и должен к каждой строке подобрать свой артикул-аналог. Типичные симптомы ручного и «движкового» подхода:
- сопоставление руками по 28 тысячам строк растягивается на недели и ошибается;
- под нечёткий поиск нужно развернуть и настроить Elasticsearch, написать пайплайны и код;
- любая правка логики под новый тип товара превращается в задачу разработчику и переиндексацию;
- результат всё равно надо отдельно собрать и выгрузить во внешнюю систему.
Как это решает Интеграм
В Интеграме весь цикл собран на конструкторе — таблицами и запросами, без программирования:
- Каталоги SKU и RFP загружаются из Excel по сохранённой настройке (порядка 500–1000 записей в секунду).
- Запрос токенизации разбивает наименования на слова и наполняет общий справочник токенов для обеих таблиц.
- Рабочее место сопоставления по пересечению токенов подбирает кандидатов; совпадение марки, модели и типа подсвечивается.
- Кнопка массового подбора запускает автоподбор в несколько потоков (~120 пар/мин) и пишет в RFP лучший артикул и альтернативы.
- Результат выгружается в Excel или отдаётся через JSON API; при необходимости шорт-лист кандидатов доуточняет языковая модель.