Утечка исходного кода поиска Яндекса - теперь нам достоверно известны все факторы ранжирования сайтов

Приветствую! Давеча пользователи форума Hacker News сообщили о великолепной находке - исходные коды сервисов Яндекса почти на 45 GB.

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

В скаченном архиве много папок, но меня заинтересовали следующие: antirobot, captcha, extsearch, kernel, metrika, robot, search, wmconsole.

Бегло проанализировав содержимое можно констатировать факт, что был слит полный репозиторий Search Engine and Indexing Bot.

В папке kernel.tar\web_factors_info\ лежит файл с 1923 факторами ранжирования Яндекса, включая TG_DEPRECATED (устаревшие, некоторые из них ссылаются на обновленную версию). Вот несколько интересные из них:

Factor { Index: 42 CppName: "FI_IS_MAIN_PAGE" Name: "IsMainPage" Tags: [TG_DOC, TG_STATIC, TG_BINARY, TG_REARR_USE, TG_UNDOCUMENTED, TG_OFTEN_ZERO, TG_L2, TG_NN_OVER_FEATURES_USE] Description: "Если главная страница владельца (чаще всего домен второго уровня, например xxxx.ru), то фактор равен 1. Для бомжатников, хостингов, личных блогов и т.д. (например, лайфджорнал, народ.ру и пр.) - домены третьего уровня (типа xxxxx.narod.ru) так же будут иметь фактор равный 1." Authors: ["aalekseev", "denplusplus"] Responsibles: "alsafr" } Factor { Index: 1908 CppName: "FI_RANDOM_COMMERCIAL" Name: "RandomCommercial" Tags: [TG_OWNER, TG_STATIC, TG_OFTEN_ZERO, TG_META, TG_DATA_FROM_SAASKV, TG_UNUSED, TG_NOT_01] Description: "'Случайный' фактор для коммерческих сайтов." Wiki: "https://wiki.yandex-team.ru/jandekspoisk/kachestvopoiska/relevance/web/factors/RandComm/" Ticket: "SEARCHSPAM-14815" Authors: ["tyamgin"] Responsibles: ["tyamgin", "ashagarov", "sdormidontov"] ImplementationTime: "2020-03-11" MinValue: -1.0 } Factor { Index: 1895 CppName: "FI_HOST_BIZ_KERNEL_PERCENTILE" Name: "HostBizKernelPercentile" Ticket: "SEARCHSPAM-14593" Wiki: "https://wiki.yandex-team.ru/JandeksPoisk/Antispam/biz-kernel-basic-description/" Tags: [TG_USER, TG_HOST, TG_STATIC, TG_L2, TG_UNUSED] Description: "Показатель качества сайта с точки зрения факторов про пользовательское поведение, агрегированных до владельцев." Authors: ["ashagarov"] Responsibles: ["ashagarov", "sdormidontov"] ImplementationTime: "2019-08-28" } Factor { Index: 705 CppName: "FI_DOC_CREATE_MONTH" Name: "DocCreateMonth" Ticket: "BUKI-1583" Wiki: "http://wiki.yandex-team.ru/JandeksPoisk/KachestvoPoiska/ObshayaFormula/TekushhieKomponenty/DocMonthFactors" Tags: [TG_DATE, TG_DOC, TG_DOC_TEXT, TG_STATIC, TG_DEPRECATED, TG_UNDOCUMENTED, TG_L2] Description: "Время создания документа с точностью до месяца 1.0 -- текущий месяц, 0 —- 10 лет назад и старше. Временно отключен" Authors: "bochkarev" Responsibles: "bochkarev" } Factor { Index: 6 CppName: "FI_LINK_RELEV_ALL_WORDS" Name: "LRp1" Group: "Dynamic" Tags: [TG_DOC, TG_DYNAMIC, TG_LINK_TEXT, TG_UNDOCUMENTED, TG_DEPRECATED] Description: "(strict) есть все слова запроса в одном линке." Authors: ["gulin", "leo"] Responsibles: ["gulin", "leo"] }

Как видно, есть описание алгоритмов рандомизации в коммерческой выдаче, а также много алгоритмов по поведенческим факторам ранжирования.

На самом деле, я ожидал увидеть код типа:

if ($pageOwner == yandex) {$rank = 1} else {$rank = rand()}

В некоторых случаях оно так и есть :)

Кроме того, был обнаружен файл с 318 факторами того, как Яндекс делает аналитику по запросам и затем по полученным данным ранжирует сайты, например:

Factor { Index: 4 CppName: "FI_Q_DIVERSITY" Name: "QDiversity" Ticket: "FRESHNESS-3225" Tags: [TG_DYNAMIC, TG_QUERY_ONLY, TG_USER, TG_USER_SEARCH, TG_USER_SEARCH_ONLY, TG_REARR_USE, TG_OFTEN_ZERO, TG_L2] Description: "Степень централизации точек, из которой задается запрос" Authors: "denplusplus" Responsibles: ["diver", "akhropov"] MoveFromFactorSource: { Sources: { ClassName: "NBg::NProto::TQueryFactors", Arg: "source" }, Expression: "source.GetQDiversity()" } DependsOn: [{Feature: ["QDiversity"], Slice: "begemot_query_factors"}] } Factor { Index: 5 CppName: "FI_Q_DIVERSITY2" Name: "Diversity2" Ticket: "FRESHNESS-3225" Tags: [TG_DYNAMIC, TG_QUERY_ONLY, TG_USER, TG_USER_SEARCH, TG_USER_SEARCH_ONLY, TG_REARR_USE, TG_OFTEN_ZERO, TG_L2] Description: "Географическая распределенность запроса" Authors: "denplusplus" Responsibles: ["diver", "akhropov"] MoveFromFactorSource: { Sources: { ClassName: "NBg::NProto::TQueryFactors", Arg: "source" }, Expression: "source.GetDiversity2()" } DependsOn: [{Feature: ["Diversity2"], Slice: "begemot_query_factors"}] } Factor { Index: 6 CppName: "FI_HOUR_DIVERSITY" Name: "HourDiversity" Ticket: "FRESHNESS-3225" Tags: [TG_DYNAMIC, TG_QUERY_ONLY, TG_USER, TG_USER_SEARCH, TG_USER_SEARCH_ONLY, TG_REARR_USE, TG_OFTEN_ZERO, TG_L2] Description: "Степень выраженности задания запросов в разное время суток" Authors: "denplusplus" Responsibles: ["diver", "akhropov"] MoveFromFactorSource: { Sources: { ClassName: "NBg::NProto::TQueryFactors", Arg: "source" }, Expression: "source.GetHourDiversity()" } DependsOn: [{Feature: ["HourDiversity"], Slice: "begemot_query_factors"}] } Factor { Index: 60 CppName: "FI_DIVERSITY_CATEG_NEED_MAP" Name: "DiversityCategNeedMap" Ticket: "BUKI-1213" Tags: [TG_DYNAMIC, TG_QUERY_ONLY, TG_THEME_CLASSIF, TG_UNDOCUMENTED, TG_L2] Description: "0 или 1 в зависимости от наличия в запросе явно выраженного интента need_map из разнообразия" Authors: "stasd07" Responsibles: "stasd07" MoveFromFactorSource: { Sources: { ClassName: "NBg::NProto::TQueryFactors", Arg: "source" }, Expression: "source.GetDiversityCategNeedMap()" } DependsOn: [{Feature: ["DiversityCategNeedMap"], Slice: "begemot_query_factors"}] }

Скачать полный файл с факторами ранжирования можно в моем GitHub.

Скачать полный архив с исходным кодом можно по magnet-ссылке:

magnet:?xt=urn:btih:7e0ac90b489baee8a823381792ec67d465488fef&dn=yandexarc&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80%2Fannounce&tr=udp%3A%2F%2F9.rarbg.to%3A2920&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969&tr=udp%3A%2F%2Fbt1.archive.org%3A6969%2Fannounce&tr=udp%3A%2F%2Fbt2.archive.org%3A6969%2Fannounce&tr=udp%3A%2F%2Fopen.demonii.com%3A1337%2Fannounce

Теперь нас ждет множество часов изучения данных, как на самом деле работают сервисы Яндекса, развенчание множества заблуждений, мифов и легенд, связанных с SEO, и корректировка стратегии продвижения проектов.

Помимо факторов ранжирования занятно посмотреть как технически настроено цензурирование контента в новостях и поиске, какой код отвечает за увеличение цены в Маркете, если заходишь с устройства Apple, почему в такси у тебя постоянно «Повышенный спрос», что записывает «Умная колонка Яндекса», и еще много чего.

Погнали изучать! :)

Другие статьи:

0
16 комментариев
Написать комментарий...
Слегка Придурковатый

Как про ПФ чего-нить ценного накопаешь, разбуди.

Ответить
Развернуть ветку
Alex V

Сам не копал, но из того что пишут: долгосрочные интересы рулят, канвас и пасивные принты не учитываются.

Ответить
Развернуть ветку

Комментарий удален автором поста

Развернуть ветку
Олег Черников // SEO

Так и предчувствую скоро новые курсы по SEO на основе слитых данных из Яндекса.

Ответить
Развернуть ветку
Чайка О.

:)
Есть ли там что-то принципиально новое?
Трактовка может быть разной, поэтому курсы вероятны.

Ответить
Развернуть ветку
Romano

актуальность факторов конечно под вопросом, особенно это отчетливо понимаешь под упоминаниями о народ.ру, Яндекс-Каталог, DMOZ... последние 2 сервиса закрылись в 2017 году...

Ответить
Развернуть ветку
Trautmori

За магнет ссылку просто ❤❤❤

Ответить
Развернуть ветку
Anna Petrova

Вот про божатников обидно было. Хотя, это же говнояндекс, который сливает карты клиентов, так что не буду обижаться.

Ответить
Развернуть ветку
Артем Акулов
Автор

Разрабы называют вещи своими именами)))))

Ответить
Развернуть ветку
Эфир Монеров

95 фактор интересен,
содержимого wiki-team в полном архе нет?

Ответить
Развернуть ветку
Артем Акулов
Автор

Надо покопаться, не встречал, в той папке просто описание факторов.

Ответить
Развернуть ветку

Комментарий удален автором поста

Развернуть ветку
Сергей Медведев

Ну что там, есть инфа, в файле есть вики яндекс ? ))

Ответить
Развернуть ветку
Артем Акулов
Автор

Конечно нет, в архиве только репы.
Но, как говорится, еще не вечер)))

Ответить
Развернуть ветку

Комментарий удален автором поста

Развернуть ветку

Комментарий удален автором поста

Развернуть ветку
Del Ins Up

Фактор гадкости контента

Factor {
Index: 755
CppName: "FI_NASTY_CONTENT"
Name: "NastyContent"
Ticket: ["FACTOR-113", "SEARCHSPAM-2435"]
Wiki: "http://wiki.yandex-team.ru/JandeksPoisk/KachestvoPoiska/ObshayaFormula/TekushhieKomponenty/NastyContent";
Tags: [TG_STATIC, TG_DOC, TG_THEME_CLASSIF, TG_UNDOCUMENTED, TG_OFTEN_ZERO, TG_L2, TG_NN_OVER_FEATURES_USE]
Description: "Фактор гадкости контента."
Authors: "melkov"
Responsibles: "alsafr"
}

Ответить
Развернуть ветку
Trautmori

жаль вики внутренняя(

Ответить
Развернуть ветку
Del Ins Up

Жаль не всё вынесли )

Ответить
Развернуть ветку
Чайка О.

Ну всё, Яндекс, трепещи )

Ответить
Развернуть ветку
13 комментариев
Раскрывать всегда