Дедупликация товаров при импорте от нескольких поставщиков

Импорт от нескольких поставщиков неизбежно засоряет каталог дублями и ломает поиск. Мы настраиваем дедупликацию товаров под ключ: сопоставляем позиции по названию, артикулу, характеристикам и штрихкоду, объединяем карточки и сохраняем все предложения поставщиков. Каталог становится чистым, а ручная проверка сокращается в разы.

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

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

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Дедупликация товаров при импорте от нескольких поставщиков
Сложный
~5 дней
Часто задаваемые вопросы

Почему импорт от нескольких поставщиков ломает каталог

Каждый поставщик отдаёт прайс в своём формате: у одного артикул в колонке SKU, у другого — Код, у третьего его нет вовсе, а товар опознаётся по названию. Импорт прайсов от нескольких поставщиков без нормализации приводит к тому, что один и тот же товар заводится заново при каждом обновлении: меняется регистр, добавляется бренд в название, отличается единица измерения. Так в каталоге появляются дубли, и дальше они расходятся по всей цепочке — в фильтрах, поиске, остатках на складе.

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

Дедупликация товаров — это не разовая чистка, а слой логики между прайсом и каталогом. Он определяет, по каким признакам товар считается тем же самым (артикул поставщика, штрихкод, связка бренд + модель), что делать при конфликте цен и как слить описания, не потеряв характеристики. Ниже разбираем, как это устроено и почему без такого слоя каталог деградирует с каждым новым поставщиком.

Что даёт корректная дедупликация товаров

Корректная дедупликация товаров — это не косметическая чистка каталога, а изменение его физики. Когда один и тот же товар приходит от трёх-четырёх поставщиков под разными названиями, артикулами и единицами измерения, каталог начинает расти быстрее, чем ассортимент: на сотню реальных позиций легко набегает триста карточек. После сведения по ключевым атрибутам — производитель, модель, модификация, штрихкод — число карточек сокращается в разы, и это первое, что видит заказчик в отчёте.

Второй эффект — конверсия поиска. Пока дубли живут отдельными карточками, остатки размазаны по ним: на одной позиции ноль, на другой три штуки, покупатель видит «нет в наличии» и уходит. После объединения остатки складываются в одну карточку, и доля запросов, которые заканчиваются добавлением в корзину, растёт без единого изменения в рекламе или ценах.

Третий эффект — ручные правки. Дедупликация товаров убирает главный источник постоянной работы контент-менеджера: сверку дублей, перенос описаний, ручной пересчёт остатков после каждой поставки. Правило сведения применяется на импорте автоматически, поэтому новые поступления от поставщиков сразу ложатся в существующие карточки, а не создают новые.

Отдельно стоит ошибка в остатках — самый дорогой класс сбоев. Когда две карточки ссылаются на один физический товар, списание по одной не уменьшает число на другой, и покупатель оформляет заказ на позицию, которой уже нет. Сведение карточек к единому идентификатору закрывает этот разрыв: остаток становится общим, а расхождение между складом и витриной перестаёт накапливаться.

Все три эффекта измеримы и проверяются на исторических данных поставщиков до внедрения — разбираем, как это устроено и какие правила сведения нужны именно вашему каталогу.

Сравнение подходов к сопоставлению товаров

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

Подход Когда подходит Ограничения
Точное совпадение по артикулу У поставщиков есть артикул производителя или штрихкод, справочник стабилен Не работает, если поставщики дают свои внутренние коды; не ловит опечатки и разные форматы записи
Нечёткое совпадение по названию Артикулы отсутствуют или противоречат друг другу, номенклатура текстовая Ложные срабатывания на похожих моделях и расфасовках; нужен порог схожести и стоп-слова
Гибридный подход с правилами слияния Несколько поставщиков, разнородные данные, нужен предсказуемый результат Требует настройки приоритетов полей и регулярного пересмотра правил
Ручной разбор очереди спорных Остаток после автоматики, критичные категории Не масштабируется без очереди и ролей; без него ошибки копятся незаметно

Точное совпадение даёт нулевую долю ложных склеек, но покрывает лишь ту часть каталога, где поставщики договорились об идентификаторах. Нечёткое сопоставление поднимает покрытие, зато требует порога схожести, нормализации регистра, единиц измерения и артикульных префиксов — иначе «кабель 2 м» и «кабель 2 м экранированный» слипнутся.

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

Этапы внедрения дедупликации в существующий импорт

Внедрение идёт поверх работающего импорта, без остановки приёма прайсов. Первый шаг — аудит: смотрим, какие поставщики и в каком формате отдают данные, где дубли уже накопились и по каким полям товары совпадают фактически. Это даёт реальную картину, а не предположение, что «артикул всё решит».

  1. Аудит текущих прайсов. Собираем выгрузки всех поставщиков, считаем объём, долю пересечений и типовые расхождения — разное написание бренда, лишние пробелы, артикулы с префиксами поставщика.
  2. Схема ключей сопоставления. Определяем, что считаем одним товаром: связка «бренд + артикул» как основной ключ, нормализованное название и штрихкод — как вспомогательные. Фиксируем приоритет источников, чтобы при конфликте полей было понятно, чьё значение главное.
  3. Правила слияния. Настраиваем, как объединяются карточки: какие поля берём от поставщика-эталона, что дополняем, как поступаем с ценой, остатками и характеристиками. Правила описываются явно, а не «на усмотрение алгоритма».
  4. Проверка на исторических данных. Прогоняем новые правила на накопленных прайсах и смотрим, сколько ложных склеек и пропущенных дублей получилось. Порог совпадения подкручиваем до приемлемого уровня, спорные пары разбираем вручную.
  5. Внедрение в конвейер импорта. Подключаем дедупликацию к текущему потоку: новые позиции проходят проверку до записи в каталог, существующие — обновляются, а не создаются заново.
  6. Регламенты и передача. Отдаём описание ключей, правил слияния и порядка действий при спорных совпадениях — чтобы команда сопровождала процесс без нас.

После запуска каталог перестаёт расти за счёт дублей, а обновление цен и остатков идёт по одной карточке вместо нескольких. Опишите, как у вас устроен импорт сейчас, — вернёмся с оценкой и планом работ.

Что заказчик получает после настройки

На выходе — не «настроенный модуль», а комплект, по которому ваши инженеры смогут работать без нас: менять правила, добавлять поставщиков, разбирать спорные совпадения.

  • Конфигурации правил дедупликации: приоритет источников, пороги схожести для артикула, названия и характеристик, поведение при конфликте полей — какой поставщик считается мастер-источником.
  • Схемы сопоставления: карта полей каждого поставщика к вашей модели товара, включая единицы измерения, вложенные категории и составные атрибуты.
  • Политики доступа: кто из сотрудников может править правила, кто — только просматривать очередь спорных совпадений, кто подтверждает объединение карточек вручную.
  • Очередь ручного разбора: интерфейс для случаев, где автоматика не уверена, с историей решений — чтобы повторный импорт не поднимал уже закрытый вопрос.
  • Документация: описание логики сопоставления, словарь синонимов и сокращений поставщиков, инструкция по добавлению нового источника.
  • Регламенты обновления: как часто пересматриваются пороги, кто отвечает за чистку справочника, что делать при массовом расхождении после смены формата выгрузки у поставщика.
  • Набор проверок на тестовой выборке: эталонные пары «дубль / не дубль», по которым видно, не деградали ли правила после правок.
  • Метрики: доля автоматически объединённых карточек, объём ручной очереди, число ложных склеек — по ним видно, когда правила пора пересматривать.

Всё это передаём с разбором на ваших данных, а не абстрактным шаблоном. Опишите задачу — вернёмся с оценкой и планом.

Кейс: как мы устранили дубли в каталоге на 40 000 позиций

Что было до

Каталог на 40 000 позиций собирался из прайсов пяти поставщиков, и каждый импорт добавлял новые карточки вместо обновления существующих. Один и тот же товар приходил под разными названиями, артикулами и единицами измерения — поставщики не сверялись между собой. Каталог рос быстрее, чем продажи: к моменту разбора в нём было около 63 000 карточек, из них почти треть — дубли.

Ручные правки съедали время контент-менеджера: после каждого импорта приходилось вручную сводить совпадения, а часть дублей так и оставалась в выдаче. Покупатель видел три карточки одного товара с разными ценами и не понимал, какая настоящая.

Что изменили

Мы построили конвейер сопоставления на стороне приложения: нормализация названий и артикулов, сравнение по набору признаков — бренд, модель, единица измерения, штрихкод. Каждой паре присваивается вес совпадения, и по порогу система решает — обновить существующую карточку или создать новую. Спорные случаи не сваливаются в общую кучу, а попадают в отдельную очередь на подтверждение.

Импорт переписали на пакетную обработку с идемпотентным ключом: повторный запуск прайса больше не плодит дубли, а обновляет те же позиции. Логика зафиксирована в правилах, а не в голове менеджера — новый поставщик подключается без переписывания кода.

Что стало

Метрика До После
Карточек в каталоге ~63 000 ~40 000
Доля ручных правок после импорта высокая единичные спорные случаи
Время импорта прайса растёт с каждым запуском стабильное
Класс ошибок дубли в выдаче, расхождение цен не воспроизводится

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

Проект вёл TrueTech: наши инженеры отвечали и за логику сопоставления, и за перестройку импорта, поэтому правила дедупликации сразу легли в основу, а не прикручивались поверх готового каталога.

Чем отличается дедупликация от нормализации данных

Нормализация данных приводит значения к единому виду, но не решает, что считать одним товаром. Это два последовательных этапа обработки, и путать их — значит получить каталог, где «iPhone 15 128Gb» и «Apple iPhone 15 128 ГБ» останутся двумя разными позициями. Нормализация отвечает на вопрос «как записать значение», дедупликация — «сколько записей должно остаться».

Нормализация работает на уровне отдельного поля: приводит регистр и раскладку, убирает лишние пробелы и непечатаемые символы, сводит единицы измерения к одной шкале, разбирает слипшиеся атрибуты вроде «128Gb Black» на объём и цвет, чистит артикулы от префиксов поставщика. На выходе каждая карточка остаётся сама собой, но её поля становятся сравнимыми — без этого следующий шаг невозможен, потому что сравнивать «128 ГБ» и «128gb» напрямую бессмысленно.

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

Граница между подходами проявляется в спорных случаях. Нормализация не спасёт, если один поставщик пишет артикул с суффиксом склада, а другой — без: значения останутся разными, хотя товар один. И наоборот, дедупликация без нормализации склеит лишнее — «iPhone 15» и «iPhone 15 Pro» совпадут по бренду и модели, если не сравнивать характеристики в едином виде.

Поэтому порядок жёсткий: сначала нормализация данных по каждому полю, затем дедупликация по составному ключу, и только потом — слияние карточек с правилами приоритета по поставщикам. Если поменять этапы местами, часть дублей останется незамеченной, а часть разных товаров схлопнется в один — и оба класса ошибок придётся разбирать вручную.

Частые технические сомнения

Импорт уже работает, товары в каталоге, и мысль «а не сломает ли дедупликация то, что живёт» — нормальная реакция инженера. Ниже — разбор трёх сомнений, которые чаще всего всплывают до старта.

У нас уже развёрнут импорт от нескольких поставщиков. Всё переделывать?

Нет. Мы не трогаем работающий контур: разбираем текущие правила сопоставления, выгружаем каталог в staging, прогоняем дедупликацию на копии и показываем отчёт — сколько групп схлопнется, сколько останется спорными. Переключение идёт по одной категории, с возможностью вернуть предыдущее состояние каталога. Боевой импорт продолжает работать, пока вы не подтвердите результат на копии.

У поставщиков разные единицы измерения — как их сводить?

Приводим к базовой единице хранения через справочник коэффициентов: упаковка, вес, объём, штука. Коэффициент задаётся один раз на единицу и переиспользуется — при добавлении поставщика не нужно переписывать правила. Если единица неоднозначна (например, «коробка» без вложенности), товар уходит в очередь на ручную проверку, а не сопоставляется наугад.

Как не потерять историю товара при слиянии дублей?

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

Что если алгоритм ошибётся и склеит разные товары?

Слияние обратимо: перед применением сохраняется снимок групп, а сам процесс идёт пакетами с журналом решений. Спорные пары не склеиваются автоматически — они попадают в отчёт с признаками совпадения, и решение принимает человек. Откат пакета возвращает карточки в исходное состояние без потери данных поставщиков.

Опишите, как у вас сейчас устроен импорт и сколько поставщиков в контуре, — вернёмся с оценкой и планом поэтапного внедрения.

Обсудим вашу задачу по дедупликации

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

Пришлите то, что уже есть под рукой: выгрузки от двух-трёх поставщиков в исходном виде, справочник категорий и брендов, если он ведётся, и описание того, как товар сейчас попадает в каталог — вручную, скриптом или через готовый модуль. Этого достаточно, чтобы увидеть структуру полей, оценить долю дублей и понять, какие правила сопоставления сработают, а какие дадут ложные склейки.

Дальше мы разберём данные и вернёмся с конкретикой:

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

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

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

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

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1369
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1142
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060