Урок 5. Текстовая релевантность без мифов: BM25 и смерть плотности ключей Ты до сих пор гонишь плотность ключей к 3-4 процентам по чьему-то чек-листу 2014 года и удивляешься, почему страница не растёт. Спойлер: алгоритм, который реально считает текстовый матч, перестал реагировать на твой десятый повтор слова ещё до того, как ты родил этот текст.
Как это работает Текстовая релевантность отвечает на один тупой вопрос: насколько слова на странице объясняют слова запроса. Только сам текст. Ни ссылок, ни поведения, ни нейронок - это всё надстраивается сверху, а под ними лежит вот эта база. Сегодняшний стандарт тут - BM25 (и его зональная версия BM25F). Тебе не нужно выводить формулу, нужно понять три её повадки. Первое - редкость слова решает. Чем реже термин встречается во всей коллекции документов, тем больше он весит. Слово "купить" встречается у всех и стоит копейки, слово "гидроизоляция" уже что-то значит, а длинный технический хвост запроса весит больше всего. Это та самая idf, и она работает против воды: общеупотребительные слова почти не дают сигнала. Второе и самое важное - насыщение. Вклад каждого следующего повтора слова не линейный, а с затуханием. Первое вхождение даёт много. Второе - заметно меньше. К пятому-шестому кривая выходит на плато, и десятый повтор не отличается от девятого вообще. Математически tf не суммируется, а упирается в потолок. Запомни это как картинку: не лестница вверх, а горка, которая быстро ложится горизонтально.
Плотность ключей не считается ни одной современной формулой ранжирования. BM25 смотрит на абсолютное число вхождений с затуханием и на длину документа - но НИГДЕ внутри нет деления "вхождения делить на общее число слов". Процент плотности - это метрика, которую сеошники придумали сами и сами в неё поверили.
Третье - нормализация длины. Формула знает среднюю длину документа в коллекции и наказывает раздутые тексты. Если ты разбавил три релевантных вхождения тремя тысячами слов ни о чём, вес этих вхождений падает: документ длинный, значит слово в нём "разрежено". Плотный осмысленный текст по теме обыгрывает простыню, написанную ради объёма. BM25F добавляет зоны. Один и тот же текст в title, в H1, в теле и в подвале весит по-разному. Поле title в реальных системах весит сильно выше тела. Это ключевой рычаг, к нему вернёмся.
На что ты влияешь, а на что нет Это ядро урока, поэтому честно по уровням.
Где у тебя прямой рычаг:
- Title. Самая недооценённая зона. Точный заголовок, отражающий смысл запроса, бьёт сильнее десятка повторов в теле. Это то место, где одно правильное вхождение реально двигает.
- H1 и подзаголовки H2. Они и структурируют тему для машины, и помогают живому читателю. Двойная польза.
- Наличие термина запроса в тексте вообще. Если слова нет на странице - матча нет, точка. Базовый порог входа.
- Анкоры внутренней перелинковки. Это тоже текстовый сигнал, и он целиком в твоей власти без риска: осмысленные анкоры помогают тематизации и индексации.
Где влияешь косвенно:
- Внешний анкорный текст. Естественные ссылки с осмысленным якорем помогают, особенно страницам с бедным своим текстом. Но ты не управляешь чужими руками - и попытка управлять детектируется (см. ниже).
- Синонимы и расширение темы. Современный поиск матчит не только точное слово, поэтому раскрытие темы смежными терминами работает, но напрямую "докрутить" это нельзя.
Где не влияешь почти никак:
- Плотность ключей как процент. Её просто не существует в формуле. Крутить нечего.
- Ключи в подвале и сквозном меню. Это "хром", шум на всех страницах, зонального веса он не даёт.
- URL как текстовый фактор. Слабый бонус на грани погрешности. Городить /kupit-deshevo-bystro-remont-moskva/ бессмысленно и подозрительно.
- Потолок текстового матча в целом. Когда у тебя и у конкурента термин есть в title и H1 - текстовая релевантность у вас обоих "достаточная", и дальше всё решают другие группы факторов. Текст доводит тебя до порога, выше порога он почти не двигает.
Что делать
- Вынеси главный смысл запроса в title. Уникальный title на каждую страницу - дубли title это слитый рычаг.
- Дай ключевую фразу 1-2 раза в важных зонах (title, H1, первый абзац) и забудь про счётчик. Дальше пиши для человека.
- Разбей тему на подтемы и вынеси их в H2. Это и сигнал структуры, и навигация для читателя.
- Чистоту длины проверяй смыслом: каждый абзац должен отвечать на запрос, а не догонять объём. Воду режь.
- Внутреннюю перелинковку делай осмысленными анкорами по теме страницы-приёмника, а не "тут" и "читать".
- Используй синонимы и естественную лексику темы вместо повтора одного и того же слова в каждом предложении.
Мифы и устаревшее
- "Плотность ключей 2-4 процента". Цифры из нулевых, ни в одной формуле этого деления нет. Метрика-фантом.
- "Чем больше повторов, тем выше". Насыщение убивает это уже на пятом вхождении, а перебор тащит под антиспам.
- "Длинный текст всегда лучше". Нормализация длины разбавляет твой сигнал. Длина ради длины - вред.
- "Напихать ключи в alt и в скрытый title". Классический объект антиспам-фильтров. Сильная зона = сильный соблазн = пристальный надзор.
- "Закупить ссылки с одинаковым денежным анкором". Однородный анкор-профиль с плохих доноров - самый палевный паттерн на свете. Реальные люди ссылаются по-разному: бренд, голый URL, описательно. Однородность - красный флаг.
Главное правило: чем сильнее текстовый сигнал, тем строже на нём сидят фильтры. Title-spam, anchor-spam, набивка ключей - это не лазейки, это первые кандидаты на санкции.
Проверь у себя
- Прогони сайт краулером и найди дубли title и пустые title - это слитый главный рычаг, чинится в первую очередь.
- Возьми топ-3 посадочные и проверь: есть ли смысл запроса в title и H1. Если ключ закопан только в теле - подними его в зоны.
- Открой свой самый "оптимизированный" старый текст и посчитай, сколько раз там точное вхождение ключа. Если больше пяти-шести - режь, ты кормишь фильтр, а не алгоритм.
- Глянь анкоры входящих ссылок: если больше половины - один и тот же коммерческий анкор, профиль однородный и это риск.