Автоматичний мапінг характеристик товарів у фільтри сайту

Постачальники називають одні й ті ж характеристики по-різному: «колір», «Колір виробу», «color», «Colour», «RAL». На сайті — один фільтр «Колір». Ручне приведення характеристик від десятків постачальників до фільтрів товарів — це сотні годин роботи, які потрібно автоматизувати. Ми маємо 5+ років дос

Розробка та обслуговування будь-яких видів сайтів:

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

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Автоматичний мапінг характеристик товарів у фільтри сайту
Складний
~5 днів

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

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1422
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1287
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    984
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1249
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    986
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1000

Постачальники називають одні й ті ж характеристики по-різному: «колір», «Колір виробу», «color», «Colour», «RAL». На сайті — один фільтр «Колір». Ручне приведення характеристик від десятків постачальників до фільтрів товарів — це сотні годин роботи, які потрібно автоматизувати. Ми маємо 5+ років досвіду в розробці систем мапінгу та успішно реалізували понад 30 проектів з автоматизації каталогів. Ми розробляємо систему мапінгу під ключ: ви завантажуєте прайси, а ми налаштовуємо словники, алгоритми нормалізації та інтеграцію з фасетним пошуком. Економія бюджету на кожному постачальнику — від 30 000 грн на рік. Час обробки одного постачальника скорочується з 40 годин до 2–3 годин, що в 10–20 разів швидше. При 20 постачальниках ви економите понад 700 годин на рік, які можна спрямувати на розвиток каталогу. Використовуємо PostgreSQL з розширенням pg_trgm для нечіткого пошуку та черги для нерозпізнаних значень. Зв'яжіться з нами — ми продемонструємо систему на ваших даних.

Архітектура автоматичного мапінгу характеристик у фільтри сайту

Три рівні абстракції:

Характеристика постачальника → Атрибут сайту → Значення фільтра "Колір виробу: Червоний" → color → "Червоний" "color: Red" → color → "Червоний" (з нормалізацією значення) "RAL 3020" → color → "Червоний" (через довідник RAL) 

Таблиці мапінгу — attribute_name_mapping (ім'я атрибута) та attribute_value_mapping (значення). Обидві підтримують пріоритет: спочатку мапінг для конкретного постачальника, потім універсальний. Це дозволяє налаштовувати винятки для окремих постачальників. Таблиця product_filter_values зберігає денормалізовані дані з індексами, забезпечуючи швидку фасетну фільтрацію. При зміні мапінгу дані перераховуються через artisan-команду.

Алгоритм автоматичного зіставлення атрибутів

Основний клас AttributeMapper виконує два кроки:

  1. Визначає внутрішній ключ атрибута (color, spec_weight_kg) за іменем від постачальника.
  2. Підбирає нормалізоване значення — або зі словника, або через автонормалізатор.
class AttributeMapper { public function mapAttribute( string $supplierName, string $supplierValue, ?int $supplierId = null ): ?MappedAttribute { // Крок 1: знайти мапінг імені атрибута $siteAttribute = $this->resolveAttributeName($supplierName, $supplierId); if (!$siteAttribute) { $this->logUnknownAttribute($supplierName, $supplierId); return null; } // Крок 2: знайти мапінг значення $siteValue = $this->resolveAttributeValue($siteAttribute, $supplierValue, $supplierId); if (!$siteValue) { // Пробуємо нормалізувати без мапінгу $siteValue = $this->autoNormalizeValue($siteAttribute, $supplierValue); } return new MappedAttribute($siteAttribute, $siteValue); } private function resolveAttributeName(string $name, ?int $supplierId): ?string { $normalized = mb_strtolower(trim($name)); // Спочатку специфічний мапінг для постачальника if ($supplierId) { $mapping = AttributeNameMapping::where([ 'supplier_id' => $supplierId, 'supplier_name' => $normalized, ])->value('site_attribute'); if ($mapping) return $mapping; } // Потім універсальний return AttributeNameMapping::whereNull('supplier_id') ->where('supplier_name', $normalized) ->value('site_attribute'); } } 

Автоматична нормалізація значень характеристик

Числові характеристики (вага, габарити, напруга) нормалізуються без словників: «2,5 кг» → 2.5, «1000 г» → 1.0. Рядкові значення зазвичай приводяться до нижнього регістру або до першого заголовного (якщо це не назва бренду). Для кольорів використовується довідник RAL — його ми інтегруємо на етапі налаштування.

private function autoNormalizeValue(string $attribute, string $raw): string { return match ($attribute) { 'spec_weight_kg' => $this->parseWeight($raw), 'spec_dimensions' => $this->parseDimensions($raw), 'spec_voltage' => $this->parseVoltage($raw), default => $this->capitalizeFirst($raw), }; } private function parseWeight(string $raw): string { // "2,5 кг" | "2500 г" | "2.5kg" → "2.5" if (preg_match('/(\d+[.,]\d+|\d+)\s*г(?:рам)?/iu', $raw, $m)) { return (string) (((float) str_replace(',', '.', $m[1])) / 1000); } if (preg_match('/(\d+[.,]\d+|\d+)\s*кг/iu', $raw, $m)) { return str_replace(',', '.', $m[1]); } return $raw; } 
Вихідне значення Атрибут Результат
2,5 кг spec_weight_kg 2.5
2500 г spec_weight_kg 2.5
Red color червоний
RAL 3020 color Червоний

Приклад мапінгу для постачальника "ТехноКом": Вихідні дані: "Колір: Red", "Вага: 2.5 kg". Мапінг: "Колір" -> color, "Red" -> Червоний; "Вага" -> spec_weight_kg, "2.5 kg" -> 2.5. Результат: товар відображається у фільтрі "Колір: Червоний" та "Вага: 2.5". Автоматичне зіставлення атрибутів відбувається за допомогою словників. Словник мапінгу зберігає відповідності між назвами постачальників та атрибутами сайту.

Чому fuzzy-пошук важливий для нових значень?

Зазначимо: коли в прайсі з'являється «Красн.», а в словнику тільки «Червоний», система пропонує оператору створити мапінг на основі схожості рядків. Використовуємо функцію similarity з модуля pg_trgm. При порозі >0.6 показуємо варіанти. Оператор одним кліком підтверджує — і на наступний імпорт значення вже мапиться автоматично. Це позбавляє ручного пошуку по каталогу.

Що входить в роботу?

  1. Проектування структури таблиць мапінгу та нормалізації.
  2. Розробка алгоритмів (словниковий мапінг, автонормалізація, fuzzy-пошук).
  3. Інтеграція з фасетним пошуком: запис значень у product_filter_values та налаштування індексів.
  4. Адміністративний інтерфейс для керування мапінгом та чергою нерозпізнаних атрибутів.
  5. Документація з розширення словників та нормалізаторів.
  6. Навчання операторів роботі з системою.

Терміни реалізації

Етап Терміни
Базовий мапінг імен атрибутів + запис у фільтри 3 дні
Автонормалізація числових значень +1 день
Fuzzy-пропозиції + черга нерозпізнаних + admin UI +2–3 дні
Повна інтеграція з фасетним пошуком і перерахунок при зміні мапінгу +1–2 дні

Підсумковий термін — від 3 до 9 днів залежно від кількості постачальників та складності довідників. Вартість базового впровадження — від 15 000 грн, повний проект — від 50 000 грн. Отримайте консультацію: ми оцінимо ваш проект за один день. Замовте демонстрацію на ваших даних — оцініть економію.

Типові помилки при мапінгу

  • Ігнорування контексту постачальника. Якщо один постачальник називає «довжина» габарит, а інший — характеристику, то універсальний мапінг зламає фільтрацію. Завжди використовуємо supplier_id.
  • Відсутність нормалізації одиниць. Змішування кг і грамів в одному фільтрі робить його марним. Ми налаштовуємо автонормалізацію під ваш асортимент.
  • Забувають про нові значення. Без черги нерозпізнаних атрибутів ви будете втрачати товари з фільтрації. Наша система накопичує статистику та підсвічує часті пропуски.
  • Відсутність перерахунку фільтрів при зміні мапінгу. Якщо не оновлювати product_filter_values, пошук буде видавати некоректні результати. Ми автоматизуємо перерахунок при кожній зміні.

Зв'яжіться з нами — покажемо, як система працює на ваших даних, і ви переконаєтеся в її ефективності. Гарантуємо результат.