Один из самых частых вопросов на стыке SEO и техподдержки звучит так: почему два человека вбивают один и тот же запрос, а выдача у них разная. Иногда отличается порядок, иногда состав топа, иногда меняется сам тип результатов. Стандартный ответ "это персонализация" верен, но бесполезен. По метаданным утечки факторов (web_production, 1923 фактора) видно, что за этим стоит не один рубильник, а связка из географической привязки запроса и документа, локальных кликовых сигналов и поздней персонализации на финальных стадиях ранжирования. Ниже - разбор того, как это устроено.
Сразу дисклеймер
Модификаторы: почему расклад переписывается под класс запросаВеса и формулы ниже иллюстративны. Реальные коэффициенты обучаемы и проприетарны, мы не знаем их числовых значений. Все выводы - реконструкция по именам и индексам факторов из метаданных, а не выгрузка боевой модели. Имена факторов и индексы приводятся как они проходят по утечке.
Чтобы понять гео, надо сначала увидеть более общий механизм. В системе есть слой модификаторов - правил, которые меняют веса факторов в зависимости от класса запроса. Это не отдельная модель на каждый случай, а перекалибровка вкладов уже существующих факторных групп. Логика такая: один и тот же набор сигналов по-разному значим для новостного, коммерческого и геозависимого запроса.
Код: Выделить всё
Mсвеж свежие/новостные: резко вверх вес Datetime и быстрых
кликов (RapidClicks); работает группа Datetime
Mкоммерц коммерческие: включается коммерч. релевантность
(DSSM продуктности [772/777/778], CommercialDssm [812]),
штраф за переизбыток рекламы; группа TG_COMMERCIAL ~76 факторов
Mгео/перс геозависимые/персональные: LOCALIZED_COUNTRY,
регион запроса [245/246], персональная история (L3/rearrange)
ХолодСтарт запросы без кликовой истории: семейство HasNoQueryShows
(факторы 64/78), вес кликовой компоненты B падает,
модель опирается на текстовые T и ссылочные H сигналы
Региональная привязка: запрос и документ
Региональность - это всегда два конца. У запроса есть регион, и у документа есть регион. Ранжирование сводит их вместе.
Регион запроса. За него отвечают факторы [245] и [246] - регион, в котором задан запрос. Это не обязательно совпадает с физической геолокацией: регион может определяться явной настройкой, IP, историей. Дополнительно работает LOCALIZED_COUNTRY - страновая локализация, более грубый уровень, чем город или область. И отдельный фактор Geo [22] - базовая географическая характеристика на уровне документа или связки документ-запрос.
Код: Выделить всё
Региональные сигналы:
[245] / [246] регион запроса
LOCALIZED_COUNTRY страновая локализация выдачи
Geo [22] базовый географический фактор
URLClicksMaxGeoCityFRC макс. геолокальная кликовая релевантность
документа по городу
Персонализация: стадия L3 и rearrangeКлючевой момент: георанжирование - это не только метка региона на документе. Это кликовая статистика, разрезанная по городам. Документ может быть формально релевантен запросу, но если его не кликают из нужного города, локальный сигнал за него не вступится.
Региональность - это коллективный сигнал: она одинакова для всех жителей одного города. Персонализация - индивидуальный слой поверх неё. По метаданным она работает не на ранних стадиях отбора, а поздно - на L3 и на стадии rearrange (перестановка).
Это архитектурно важно. Кандидаты сначала отбираются и ранжируются общей моделью без оглядки на конкретного человека - так дешевле и стабильнее. И только на финальной перестановке к уже сформированному топу применяется персональная история: что этот пользователь раньше кликал, какие сайты предпочитал, к какой тематике тяготеет. Поэтому персонализация чаще меняет порядок внутри топа, а не вытаскивает документ из глубины - rearrange переставляет, а не пересобирает выдачу с нуля.
Код: Выделить всё
Конвейер (упрощённо):
отбор кандидатов -> базовое ранжирование (общая модель)
-> L3 / rearrange (персональный слой)
персональная история применяется здесь, последней
Холодный старт: почему длинный хвост ведёт себя иначе
Геозапросы и персонализация опираются на накопленную статистику. Но у редких запросов её нет. Здесь включается режим холодного старта - семейство HasNoQueryShows (факторы [64] и [78]). При отсутствии кликовой истории вес кликовой компоненты B снижается, и модель вынужденно опирается на текстовые (T) и ссылочные (H) сигналы.
Для гео это значит: по высокочастотным локальным запросам решает накликанная городская статистика (URLClicksMaxGeoCityFRC), а по редким геозапросам - текстовая и ссылочная релевантность, потому что кликов просто нет. Длинный хвост иначе не отранжировать.
Что из этого следует для локального SEO
- Плавающие позиции - норма, а не аномалия. Региональный разрез ([245/246], LOCALIZED_COUNTRY) и персональный слой (L3/rearrange) делают "единой" выдачи не существующей в природе. Снимать позиции имеет смысл только с фиксацией региона и желательно в обезличенном режиме.
- Региональная привязка документа - базовое условие, но не достаточное. Geo [22] и LOCALIZED_COUNTRY задают, на какой регион вы вообще претендуете. Дальше вопрос решает городская кликовая релевантность.
- Локальные клики - это сигнал, который надо заработать. URLClicksMaxGeoCityFRC означает, что вытесняет федералов из локальной выдачи именно поведение пользователей из целевого города, а не плотность ключевиков.
- Персонализацию нельзя оптимизировать напрямую, но можно понимать. Она объясняет, почему лояльная аудитория видит вас выше: их история кликов работает на вас на стадии rearrange.
- Для редких геозапросов важнее текст и ссылки. В холодном старте (HasNoQueryShows [64/78]) кликовая компонента молчит, и решают T и H. Длинный хвост закрывается контентом и ссылочным, а не накопленной статистикой, которой ещё нет.
Итог. Региональность и персонализация - не один эффект, а два слоя на разных стадиях конвейера. Регион запроса и городская кликовая релевантность формируют локальный топ раньше и сильнее; персональная история лишь переставляет его на финале. Разные позиции у разных людей - это не сбой, а штатная работа модификатора Mгео/перс. Все индексы и имена - реконструкция по метаданным, числовые веса остаются проприетарными.