Товарная выдача Яндекса 2026: как ранжируются товары (yandex.ru/products, Маркет)

Рейтинг: 0% · 0 голосов
Разбор устройства поиска и факторов ранжирования: реконструкция формулы, поведенческие, текстовые, ссылочные и хостовые факторы, антиспам, что живо и что давно мёртво. Аналитика на основе метаданных факторов web_production.
Ответить
Аватара пользователя
anna_seo
Сообщения: 70
Зарегистрирован: 11 май 2026, 05:31

Товарная выдача Яндекса 2026: как ранжируются товары (yandex.ru/products, Маркет)

Сообщение anna_seo »

О чём этот разбор

Это хаб-тред кластера по товарной вертикали Яндекса. Разбираю по исходному коде дерева ya/extsearch/goods - того самого бекенда, который ранжирует товары на yandex.ru/products и собирает товарный колдунщик в основной выдаче. Здесь даю общую карту: что такое вертикаль, как устроен конвейер от фида до выдачи, чем оффер отличается от карточки модели, какие есть места показа и какие группы сигналов реально живут в реестре факторов. Точечные разборы отдельных групп - в подтредах ниже.
Сразу граница вывода. Это реконструкция по исходникам вертикали goods, а не официальная формула Маркета. Ранжирует тут CatBoost/MatrixNet - дерево решений, у факторов НЕТ фиксированных процентных весов. Любые цифры вида "фактор N процентов" из публичных гайдов - это маркетинговая оценка, а не то, что лежит в коде. Я говорю про сигналы качественно - сильный или слабый - и помечаю реконструкцию.
Что такое товарная вертикаль и колдунщик

Товарная выдача живёт в двух местах. Первое - отдельная страница yandex.ru/products: пользователь вводит запрос, получает галерею карточек товаров с ценой, рейтингом, отзывами и кнопкой в магазин. Второе - товарный колдунщик (он же товарная галерея): блок карточек, который подмешивается прямо в основной веб-поиск, когда бегемот распознаёт коммерческий товарный интент по запросу.

Кто решает, что запрос товарный - это правила интента (market.cpp на стороне бегемота). Если интент сработал, apphost дёргает товарный report, тот ранжирует офферы и модели и отдаёт блок наверх. Если нет - товарного блока в выдаче не будет вообще, и никакая оптимизация карточки не поможет: сначала надо, чтобы запрос вообще классифицировался как товарный.

Конвейер: фид -> индекс Маркета -> report

Код: Выделить всё

1. МАГАЗИН отдаёт фид (YML / Yandex Market Language)
        офферы: цена, наличие, доставка, картинки, параметры
                |
                v
2. ПРИЁМ ФИДА + МАТЧИНГ + КАТЕГОРИЗАЦИЯ        <-- upstream, дерево market/
        - валидация и парсинг YML
        - матчинг оффера в карточку модели (model)
        - раскладка по дереву категорий (hid/nid)
        ЭТО НЕ В ДЕРЕВЕ goods. Тут офферы превращаются
        в индекс. Ошибки фида ловятся ИМЕННО здесь.
                |
                v
3. ПОКОЛЕНИЕ ИНДЕКСА (ресурс MARKET_REPORT_DIST_META)
        раскатывается шардами на бекенды report ~каждые 12 ч
                |
                v
4. ЗАПРОС: apphost -> бегемот (интент, market.cpp) -> report
        report применяет факторы и CatBoost-формулу        <-- дерево goods/
        ЭТО ТО, ЧТО МЫ РАЗБИРАЕМ
Ключевой момент, который путают почти все гайды по Маркету. Приём фида, валидация YML, матчинг оффера в модель и категоризация - это upstream, дерево market/, а НЕ goods/. В goods/ приезжает уже готовый индекс. Поэтому проблемы "товар не подтянулся в карточку", "слетела категория", "не приняли фид" решаются на уровне фида и матчинга, а не ранжирования. А вот "товар в индексе есть, но стоит низко" - это уже про факторы report, про которые тред.
Ещё одно следствие: индекс обновляется поколениями раз в ~12 часов. Поменяли цену или наличие в фиде - оно доедет до ранжирования не мгновенно, а со следующим поколением. Гнаться за минутной свежестью бессмысленно, конвейер пакетный.

Оффер против карточки модели

Это два разных объекта, и факторы у них разные.

Код: Выделить всё

ОФФЕР (offer)  - конкретное предложение конкретного магазина:
                 "наушники X, магазин Y, 5990 р, в наличии, доставка завтра"
                 теги факторов: TG_OFFER
                 примеры: OFFER_PRICE, DELIVERY_FREE, DISCOUNT_IN_RUB

МОДЕЛЬ (model) - обобщённая карточка товара, к ней приматчены
                 много офферов от разных магазинов:
                 "наушники X" + агрегаты по всем офферам
                 теги факторов: TG_MODEL
                 примеры: MIN_MODEL_PRICE, AVG_MODEL_PRICE,
                          MAX_MODEL_PRICE, MODEL_RATING
Один и тот же фактор цены существует в двух ипостасях: OFFER_PRICE - цена этого предложения, а MIN_MODEL_PRICE / AVG_MODEL_PRICE / MAX_MODEL_PRICE - агрегаты по всей карточке. У карточки модели есть собственный MODEL_RATING, которого у голого оффера нет.

Места показа (Tags)

В реестре факторов у каждого фактора есть теги, которые говорят, на каком месте выдачи он применим. Один фактор часто живёт сразу на нескольких местах.

Код: Выделить всё

TG_TEXT_PLACE         текстовая товарная выдача (список/галерея товаров)
TG_MODEL_OFFER_PLACE  карточка товара с офферами от магазинов
TG_BLENDER_PLACE      подмешивание товарного блока в блендер общей выдачи
TG_OFFER / TG_MODEL   уровень объекта (оффер или модель)
TG_BASE               исходные/базовые сигналы
TG_DOCUMENT_QUERY_CTR поведение: связка документ-запрос (клики/CTR)
TG_DSSM / TG_DJ       нейросетевые эмбеддинги и рекомендательные сигналы
TG_DEPRECATED         мёртвый, НЕ рабочий - не подавать как сигнал
TG_UNUSED             объявлен, но не используется
Пример из кода: OFFER_PRICE помечен сразу TG_BASE, TG_OFFER, TG_BLENDER_PLACE, TG_MODEL_OFFER_PLACE, TG_TEXT_PLACE - то есть цена работает почти везде. Практический вывод: одна и та же карточка ранжируется разными наборами факторов в зависимости от того, где её показывают - в галерее products, в карточке с офферами или в блоке внутри веб-поиска.
Важно про deprecated/unused. В реестре 3144 фактора (Index 0..3143), и заметная часть помечена TG_DEPRECATED или TG_UNUSED. Если где-то увидите красивое имя фактора - это ещё не значит, что он влияет на выдачу сегодня. Часть имён - это история и эксперименты.
Каскад моделей CatBoost

Ранжирование - не одна формула, а каскад. В data/formulas лежат скомпилированные модели: meta_models (~90 версий), models и formulas в JSON (~500+). Грубо это работает так: дешёвые факторы отбирают кандидатов, затем более тяжёлые формулы (CatBoost-деревья) переранжируют топ, в товарной выдаче добавляются нейросетевые сигналы (DSSM/BERT) и поведенческие.

Код: Выделить всё

кандидаты (много) -> базовый отбор по дешёвым факторам
                  -> meta-модель CatBoost: переранжирование топа
                  -> досыпка DSSM/BERT + поведение
                  -> финальный порядок в блоке/галерее
Именно поэтому нет "веса фактора X". Дерево решений комбинирует факторы нелинейно: один и тот же OFFER_PRICE в разных ветках дерева тянет в разную сторону в зависимости от категории, запроса и остальных признаков.

Шесть групп сигналов

Сводная карта групп - детали в подтредах. Имена даны как в коде.

Код: Выделить всё

ГРУППА            РЕАЛЬНЫЕ ФАКТОРЫ (из factors_meta_gen.in)
----------------- ------------------------------------------------
1 ТЕКСТ/РЕЛЕВ     BM25_TITLE, BCLM_TITLE, семейство BM25_*_TITLE,
                  BMRKT_WM_TITLE_* - соответствие запрос<->название
2 ЦЕНА            OFFER_PRICE, MIN/AVG/MAX_MODEL_PRICE,
                  DISCOUNT_IN_RUB, DJ_DOCUMENT_PRICE_GRADE_CATEGORY
                  (цена относительно типичной в категории)
3 НАЛИЧИЕ+ДОСТАВКА DELIVERY_FREE, DELIVERY_PRICE, DELIVERY_LOCAL,
                  DELIVERY_SELF, AVG_REL_WITH_DELIVERY
4 МАГАЗИН/ДОВЕРИЕ  FIXED_SHOP_OPINION_COUNT_Q0..Q100 (отзывы о
                  магазине по квантилям), VENDOR-сигналы,
                  EQUAL_VENDOR_CODE
5 ОТЗЫВЫ/КАРТОЧКА  MODEL_RATING, BG_DIVERSITY_CATEG_REVIEW
6 ПОВЕДЕНИЕ/CTR   CPA, BERT_CLICK, DSSM_*_CPA_CLICK,
                  RAPID_CLICKS_* (клик->заказ),
                  BLUE_CATEGORY_ORDERS_DIV_MODEL_CLICKS
Короткий разбор каждой группы.
  • Текст и релевантность. Огромное семейство BM25/BCLM по полю TITLE - это соответствие слов запроса названию товара. Название - главное текстовое поле в товарной карточке, и под него заточена куча факторов. Отсюда практика: писать название по-человечески, с типом товара и ключевыми параметрами, без мусора и спама.
  • Цена. Не только абсолютная (OFFER_PRICE), но и относительная: DJ_DOCUMENT_PRICE_GRADE_CATEGORY оценивает, насколько цена выбивается из типичной по категории. То есть важна не дешевизна сама по себе, а адекватность цены для своего сегмента.
  • Наличие и доставка. Целая группа DELIVERY_*: бесплатная, платная, локальная, самовывоз, плюс AVG_REL_WITH_DELIVERY. Нет в наличии или дорогая/медленная доставка - сигнал режется. Это то, что упирается в фид: наличие и условия доставки берутся именно оттуда.
  • Магазин и доверие. FIXED_SHOP_OPINION_COUNT_Q0..Q100 - количество отзывов о магазине, разложенное по квантилям. Плюс вендорные сигналы. Доверие к продавцу - отдельный пласт от качества самого товара.
  • Отзывы и карточка. MODEL_RATING - рейтинг карточки модели. Хорошо заполненная карточка с фото, параметрами и живыми отзывами тянет вверх.
  • Поведение и CTR. Самая тяжёлая по объёму группа в коде. CPA и связки клик->д弛вел-тайм->заказ (RAPID_CLICKS_*), нейросетевые предсказания клика (BERT_CLICK, DSSM_*_CPA_CLICK), отношение заказов к показам (BLUE_CATEGORY_ORDERS_DIV_MODEL_CLICKS). Маркету важен не клик, а доведение до заказа - это видно по обилию CPA-факторов.
Практический вывод хаба. Сначала проверьте, что вы вообще в индексе и приматчены к нужной модели - это upstream, фид и матчинг (дерево market/). Потом работайте над тем, что видят факторы report: честное название под TITLE, адекватная для категории цена, наличие и нормальная доставка в фиде, отзывы и заполненная карточка, репутация магазина. А выше всего этого стоит поведение: CTR в галерее и доведение клика до заказа. Веса не статичны - решает CatBoost-каскад, и сигналы работают в комплексе, а не по отдельности.
Дисклеймер ещё раз: всё выше - реконструкция по исходникам товарной вертикали goods, не официальная формула Маркета. Часть факторов из реестра помечена deprecated/unused; статических процентных весов у факторов нет, потому что ранжирует дерево решений.

Разборы по темам Соседние разборы раздела Полная карта раздела: viewtopic.php?t=1856
👍 ❤️ 🔥 😄 🤔
Ответить
Поделиться темой: ✈ Telegram VK
Похожие запросы: что такое seo простыми словами

Вернуться в «SEO и факторы ранжирования»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость