Фасетная навигация и SEO: более глубокий взгляд

Автор: Мэтью Генри (Matthew Henry) – разработчик SEO-инструментов, Portent.

Если вы когда-нибудь покупали онлайн, то видели фасетную навигацию. Это список кликабельных пунктов, расположенных обычно на панели слева, с помощью которых можно фильтровать результаты по бренду, цене, цвету и т.п. Фасетная навигация позволяет комбинировать и сопоставлять критерии фильтрации в любых комбинациях по желанию пользователя. Этот подход к навигации популярен среди крупных интернет-магазинов, поскольку даёт потенциальным покупателям возможность прицельно искать то, в чём они заинтересованы.

Однако использование этого подхода может повлечь за собой огромные проблемы для SEO, поскольку при этом генерируются миллиарды бесполезных страниц. В результате расходуется бюджет сканирования и снижаются шансы на то, что весь реальный контент будет проиндексирован. Поисковые системы при этом получают сообщение, что сайт содержит в основном низкокачествнные «мусорные» страницы.

Многие статьи о фасетной навигации в основном посвящены тому, как устранить SEO-проблемы, которые она вызывает. Это реактивные стратегии: как предотвратить сканирование и индексирование миллиардов страниц, создаваемых фасетной навигацией.

Эта статья не относится к такого рода материалам. В ней речь пойдёт о решениях, которые приводят к массовому дублированию контента, и о том, как избежать такой ситуации с самого начала.

Наша цель – дать вам более глубокое понимание каждого решения, которое влияет на сканирование и число генерируемых страниц. Полученные знания вы сможете применять как для предотвращения проблем, так и для их устранения (если они уже возникли).

Типы соответствия и группировка

Фасетная навигация обычно разделена на группы со списком кликабельных опций в каждой из них. Например, в одной группе могут быть названия торговых марок, в другой – размеры, ещё в одной – цвета и т.д. Варианты в каждой группе могут комбинироваться любым из следующих способов:

  • Соответствие по типу «AND» («и»). При выборе этого типа соответствия магазин показывает только тот товар, который соответствует всем выбранным критериям. AND-соответствие чаще всего используется в том случае, когда предполагается, что покупатель ищет конкретную комбинацию характеристик и заинтересован только в тех товарах, которые обладают всеми заданными критериями. Например, беспроводные и шумоподавляющие наушники.
  • Соответствие по типу «OR» («или»). В этом случае магазин показывает товары, которые соответствуют любому из заданных критериев. Этот тип соответствия может использоваться для списков названий брендов, цветов, ценовых диапазонов и многих других вещей. Здесь предполагается, что пользователь заинтересован в нескольких разных вещах и хочет увидеть комбинированный список, включающий все из них. Например, все лыжные шапки в красном, розовом или жёлтом цвете.
  • Соответствие по типу «Radio button» (переключатели). При этом типе соответствия может быть выбран только один критерий за раз. Выбор одного варианта отсекает все остальные. Здесь предположение состоит в том, что критерии фильтрации являются взаимоисключающими, и никто не захочет видеть больше одного результата за раз.

Варианты внутри конкретной группы могут комбинироваться путём использования одного из этих типов соответствия, но сами группы практически всегда комбинируются с помощью AND-соответствия. Например, если вы выбираете красный и зелёный из группы «Цвета» и XL и XXL из группы «Размеры», то вы получите список товаров, которые соответствуют одному из этих цветов и одному из этих размеров.

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

Так, на примере выше имеется более 17 млрд возможных комбинаций. Обратите внимание, что общее число актуальных страниц будет намного большим, поскольку результаты из некоторых комбинаций будут разделены на несколько страниц.

При фасетной навигации количество страниц определяется в конечном итоге тремя главными вещами:

  • Общим число возможных комбинаций вариантов. В самом простом случае (при использовании только AND- и OR-соответствия) количество комбинаций будет равно 2n, где n – это число вариантов. Например, у вас имеется 12 вариантов, тогда мы получаем 212 или 4 096 возможных комбинаций. Ситуация несколько усложняется, когда в некоторых группах используются переключатели и намного больше усложняется, когда вы начинаете применять блокировку.
  • Количеством совпадающих товаров, найденных по заданной комбинации. Число совпадающих элементов определяется многими факторами, включая тип соответствия, общее количество товаров, часть товаров, совпадающих по каждому критерию фильтрации, и количество пересечений между вариантами.
  • Максимальным числом товаров, отображаемых на странице. Это произвольный выбор, который задаётся веб-дизайнером. Вы можете установить любое число, какое захотите. Большее число означает меньше страниц, но больше контента на каждой из них.

Как рассчитывались представленные в статье результаты?

Все нумерические результаты в этой статье были получены с помощью симуляционного скрипта, написанного с этой целью. Скрипт работает путём моделирования сайта как многомерной гистограммы, которая затем масштабируется и повторно объединяется сама с собой каждый раз, когда на сайт добавляется новый вариант фасетной навигации. Скрипт довольно быстро симулирует гигантские сайты со множеством различных групп, состоящих из разных типов фильтрации.

Как тип соответствия влияет на количество страниц

Выбор типа соответствия влияет на количество страниц через число комбинаций критериев и число совпадающих товаров на одну комбинацию.

Tест №1. Только AND-соответствие

Предположим, у нас есть сайт со следующими ресурсами:

  • Фасетная навигация состоит из одной большой группы с 32 вариантами фильтрации, которые могут быть выбраны в любой комбинации;
  • Общее количество товаров равно 10 000;
  • В среднем каждая опция фильтрации соответствует 20% товаров;
  • Сайт отображает до 10 товаров на страницу;
  • Критерии комбинируются с использование типа соответствия «AND».

В результате мы получаем сайт, у которого:

  • 4 294 967 296различных комбинаций критериев фильтрации;
  • 4295 064 687 страниц;
  • 4294 724 471 страниц с пустыми результатами.

Из этого очевидно, что количество страниц огромно, а подавляющее большинство из них являются пустыми результатами. На каждые 12 625 страниц сайта только одна показывает реальные товары. Остальные содержат сообщение: «Товаров не найдено». Это ужасный пользовательский опыт и колоссальные траты краулингового бюджета. Но здесь есть также и возможности.

Что мы можем сделать со всеми этими пустыми страницами? Если вы контролируете код на стороне сервера, вы можете их удалить. Любая опция, которая приведёт к появлению страницы «Товаров не найдено» должна удаляться. Это должно оцениваться на стороне сервера каждый раз, когда запрашивается новая страница. При правильной реализации всякий раз, когда пользователь будет выбирать ещё одну опцию, все оставшиеся варианты, которые привели бы к появлению страниц с пустыми результатами, будут пропадать. В итоге это сократит количество страниц и также значительно улучшит пользовательский опыт. Пользователям больше не нужно будет пробираться через нерабочие комбинации, чтобы найти те редкие сочетания, по которым показываются товары.

Итак, давайте опробуем этот подход.

Тест №2. AND-соответствие с удалением страниц с пустыми результатами

Этот тест идентичен тесту №1 за исключением того, что все ссылки, которые ведут на пустые результаты, удаляются.

На этот раз мы получаем:

  • 1 149 017 (рабочих) комбинаций критериев фильтрации;
  • 1 246 408 страниц;
  • 0 страниц с пустыми результатами.

Это по-прежнему немало, но уже значительно лучше, чем в предыдущем тесте – количество страниц уменьшилось с миллиардов до ≈1,1 млн. Кроме того, это также намного лучший опыт взаимодействия для пользователей, поскольку они больше не видят бесполезные варианты, возвращающие нулевые результаты. Каждый сайт, использующий фасетную навигацию, должен применять этот подход по умолчанию.

Тест №3. Соответствие по типу «OR»

В этом тесте мы используем те же параметры, что и в первом, но используем  тип соответствия «OR», а не «AND».

  • Фасетная навигация по-прежнему включает 32 варианта;
  • На сайте по-прежнему 10 тысяч товаров;
  • Каждая опция соответствует 20% товаров;
  • Сайт показывает 10 товаров на страницу.

В результате использования OR-соответствия мы получаем:

  • 4 294 967 296 комбинаций вариантов;
  • 4 148 637 734 396 страниц (!)
  • 0 пустых результатов.

Количество возможных комбинаций то же самое, но количество страниц намного больше (в 996 раз), но больше нет пустых результатов.

Почему число страниц так велико? Потому что при OR-соответствии каждый раз по клику новый вариант количество соответствующих товаров увеличивается – в отличие от AND-соответствия, где оно уменьшается.

В данном тесте большинство комбинаций включают практически все товары на сайте. В тесте №1 большинство комбинаций возвращали пустые результаты.

Тест №4. Переключатели

Этот тест использует тип соответствия «Radio button». Если мы повторим тест №1 с этим типом соответствия, то получим:

  • 33 комбинации вариантов;
  • 7 400 страниц;
  • 0 пустых результатов.

Это намного более эффективно, чем любой из предыдущих вариантов. Недостатком этого типа соответствия является то, что оно намного сильнее ограничивает выбор пользователей.

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

Обзор тестов 1-4:

Тест Конфигурация Число страниц
1 AND-соответствие (без блокировки пустых результатов) 4 295 064 687
2 AND-соответствие с блокировкой пустых результатов 1 246 408
3 OR-соответствие 4 148 637 734 396
4 Переключатели 7400

Выводы:

  • Выбор типа соответствия важен и заметно влияет на количество страниц.
  • OR-соответствие может привести к экстремально большому числу страниц.
  • AND-соответствие – неплохой выбор, если вы блокируете пустые результаты.
  • Пустые результаты нужно блокировать всегда.
  • Блокировка пустых результатов помогает в случае AND-соответствия, но не влияет на OR-соответствие.
  • Всегда используйте переключатели, когда варианты взаимно исключают друг друга.

Как группировка влияет на количество страниц

Итак, мы рассмотрели количество генерируемых страниц для сайтов с одной объёмной группой вариантов для фильтрации и одним типом соответствия. Но в реальности таких сайтов нет. На реальном сайте обычно имеется несколько групп с разными типами соответствия. То, как доступные варианты распределяются по группам, – это ещё один фактор, влияющий на количество страниц.

Тест №5. Соответствие по типу «OR», разделение на несколько групп

Базовые параметры у нас те же, что и в предыдущих тестах:

  • 32 варианта фильтрации;
  • 10 000 товаров;
  • каждый вариант фильтрации соответствует 20% товаров;
  • на странице отображается 10 товаров;
  • варианты фильтрации комбинируются с использованием типа соответствия «OR».

Но на этот раз мы повторим тест несколько раз, каждый раз разделяя 32 варианта на разное число групп.

Конфигурация Страницы Пустые результаты
1 группа с 32 вариантами 4 148 637 734 396 0
2 группы с 16 вариантов в каждой 2 852 936 777 269 0
4 группы с 8 вариантами в каждой 466 469 159 950 0
8 групп с 4 вариантами в каждой 5 969 194 867 290 250 752
16 групп с 2 вариантами в каждой 4 296 247 759 4 275 284 621

Результат

Интересно, что в последних двух тестах у нас появляются пустые результаты. При этом все группы используют OR-соответствие, а как мы выяснили ранее, при этом типе соответствия пустые результаты не генерируются. Что же происходит в этом случае?

Запомните, независимо от того, какие типы соответствия используются в каждой группе, группы комбинируются друг с другом путём использования AND-соответствия. Поэтому, если вы разбиваете OR-группы на более мелкие OR-группы, то вы получаете поведение, близкое к AND-группе.

Допустим, есть восемь групп по четыре варианта в каждой, и пользователь выбрал один вариант из каждой группы. Любой товар, который будет показан в этих результатах, должен совпадать со всеми восемью выбранными вариантами. Функционально это аналогично тому, что вы бы получили, если бы эти восемь вариантов были частью AND-группы.

Если вы блокируете пустые результаты (что нужно делать всегда), тогда фактическое количество страниц для последних двух тестов будет намного меньшим, чем показано в таблице выше. Однако для этого нужно иметь несколько групп. Восемь групп по четыре варианта в реальном мире встречается редко.

Наши наблюдения показывают, что даже разбивка одной группы на две части заметно сокращает количество генерируемых страниц. Разница не огромна, но достаточно заметна, чтобы иметь некоторую ценность. Если группа вариантов, в которой используется тип соответствия «OR», может быть логически разделена две и больше более мелких групп, то это стоит сделать.

Тест №6. Тип соответствия «AND», разделение на несколько групп

Этот тест основан на тех же параметрах, что и 5-й, но в данном случае вместо OR-соответствия используется соответствие по типу «AND», а пустые результаты блокируются.

Конфигурация Страниц
1 группа с 32 вариантами 1 246 408
2 группы с 16 вариантами в каждой 1 246 408
4 группы с 8 вариантами в каждой 1 246 408
8 групп с 4 вариантами в каждой 1 246 408
16 групп с 2 вариантами в каждой 1 246 408

В результате мы видим, что у всех групп одинаковое количество страниц. Как это возможно? Варианты внутри каждой группы используют AND-соответствие, группы комбинируются между собой, также используя этот тип соответствия. Поэтому неважно, одна у вас группа или несколько. Функционально они идентичны.

Вывод

Если вы хотите разделить AND-группу, поскольку думаете, что это может быть оправданно для пользователей или же будет лучше выглядеть на странице, тогда вы можете это сделать, но это не повлияет на количество страниц.

Рассмотрим другие факторы, влияющие на количество страниц.

Тест №7. Изменение количества товаров на страницу

Этот тест использует следующие параметры:

  • фасетная навигация состоит из пяти групп с разным количеством вариантов и разными типами соответствия;
  • на сайте содержится 10 тысяч товаров;
  • в среднем каждый вариант фильтрации соответствует 20% товаров;
  • ссылки на пустые результаты блокируются.

Тест был повторён несколько раз с указанием разного значения для параметра «Количество товаров на страницу».

Конфигурация Число страниц
10 товаров на страницу 18 690 151 025
32 товара на страницу 10 808 363 135
100 товаров на страницу 8 800 911 375
320 товаров на страницу 8 309 933 890
1000 товаров на страницу 8 211 780 310

Как выяснилось, чем меньше значение этого параметра, тем более заметно влияние на количество страниц и наоборот.

Тест №8. Добавление лимита пагинации

Некоторые сайты, особенно очень крупные интернет-магазины, пытаются уменьшить нагрузку на базу данных, установив «лимит разбивки на страницы». Это произвольно выбираемое предельное количество страниц, которые могут возвращаться для данного набора результатов.

Например, если заданная комбинация фильтров соответствует 512 000 товаров, а сайт настроен на показ 10 товаров на страницу, то для этого конкретного сочетания будет создано 51 200 страниц. Некоторые сайты устанавливают лимит на, скажем, 100 страницах. Если пользователь перейдёт на сотую страницу, то дальше он продвинуться не сможет.

Чем больше сайт, тем больше нагрузка на базу данных, поэтому крупные сайты должны устанавливать такие лимиты.

Тест №8 был основан на следующих параметрах:

  • Фасетная навигация состоит из пяти групп с разным количеством вариантом и разными типами соответствия;
  • На сайте всего 500 000 товаров;
  • В среднем каждый вариант фильтрации соответствует 20% товаров;
  • Ссылки на пустые результаты блокируются.

Тест был повторён несколько раз с разными значениями лимита пагинации.

Лимит пагинации Общее количество страниц
5 12 079 937 370
10 13 883 272 770
20 15 312 606 795
40 16 723 058 170
80 17 680 426 670
160 18 252 882 040
Без ограничений 18 690 151 025

Результат

Улучшение определённо было, но не очень выраженное. Если вы сократите лимит пагинации наполовину, то не получите в итоге половину страниц. Скорее, около 90%.

Выводы по пагинации:

  • Тест №7. При более низких значениях параметра «Количество товаров на страницу» число страниц заметно уменьшалось. Когда значение становилось выше, эффект уменьшался. Это происходило потому, что большинство результатов помещались на одной странице, а количество страниц не могло стать меньше 1.
  • Тест №8. Если вы владеете крупным сайтом с лимитом пагинации, установленным преимущественно с целью снижения нагрузки на базу данных, то вы можете заметить небольшие улучшения с точки зрения SEO в качестве бонуса. Если же вас не интересует снижение нагрузки на базу данных, то отдельно этим заниматься не стоит.

Выборочная блокировка краулеров

Все описанные выше тесты позволяли краулерам видеть все доступные для пользователей страницы. Ниже мы рассмотрим стратегии, которые позволяют блокировать страницы через метатег robots, файл robots.txt и т.п.

Прежде, чем мы перейдём к этим стратегиям, нам нужно определиться, что подразумевается под «количеством страниц». Есть три разных аспекта, которые имеют для нас значение:

  • Количество страниц, видимых для пользователей – страницы, которые могут быть просмотрены человеком с помощью браузера;
  • Количество страниц, которые могут быть просканированы – страницы, которые разрешено запрашивать поисковым роботам;
  • Количество страниц, которые могут быть проиндексированы - страницы, которые разрешено индексировать и которые могут показываться в результатах поиска.

Количество сканируемых страниц важно, потому что оно определяет, как много краулингового бюджета расходуется. А это в свою очередь влияет на то, насколько тщательно и часто сканируется актуальное содержимое сайта.

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

Тест №9. Ограничение выбора с помощью метатега robots со значением “noindex, nofollow”

В этом тесте, если количество выбранных вариантов на страницу превышает установленный лимит, то в HTML будет добавляться директива <meta name="robots" content="noindex,nofollow">, которая запрещает поисковым системам индексировать страницу и переходить по ссылкам на ней.

Данный тест использует следующие параметры:

  • Фасетная навигация состоит из пяти групп с разным количеством вариантом и разными типами сопоставления.
  • На сайте доступно 10 000 товаров.
  • В среднем каждый критерий фильтрации соответствует 20% товаров;
  • Ссылки на пустые результаты блокируются.

В рамках теста «лимит выбора» варьировался от 0 до 5. Любая страница, где количество выбранных критериев является большим, чем установленный лимит, будет блокироваться через метатег robots c атрибутом “noindex, nofollow”.

is larger than this selection limit will be blocked, via robots meta tag with noindex, nofollow.

Ограничение выбора Сканируемые страницы Индексируемые страницы
0 11 400 1000
1 79 640 11 400
2 470 760 79 640
3 2 282 155 470 760
4 9 269 631 2 282 155
5 32 304 462 9 269 631
Без ограничений 18 690 151 025 18 690 151 025

В результатах мы видим, что и доступное для сканирования, и доступное для индексации количество страниц значительно сократилось, однако число сканируемых страниц уменьшилось намного меньше. Почему?  Потому что метатег robots является частью HTML-кода той страницы, которая блокируется. Это значит, что краулер должен загрузить страницу, чтобы увидеть, что она должна блокироваться. Метатег robots может блокировать индексацию, но не может блокировать сканирование. Соответственно, в данной ситуации краулинговый бюджет по-прежнему тратится.

У вас может возникнуть вопрос: если метатег robots не может блокировать страницу от сканирования, тогда почему количество сканируемых страниц вообще сократилось? Причина довольно проста: краулеры не могут достичь более глубоко расположенных страниц – страницы, которые ссылаются на них, закрыты от индексации и перехода по ссылкам. Метатег robots не может напрямую заблокировать сканирование конкретной страницы, но может блокировать её опосредованно – через добавление атрибута “nofollow” для всех страниц, которые на неё ссылаются.

Тест №10. Повтор теста №9, но с директивой “noindex, follow”

В данном тесте все параметры те же, что и в предыдущем, только теперь страницы блокируются с помощью метатега robots  с атрибутом “noindex, follow”. Эта директива сообщает краулеру, что он не может индексировать страницу, но может переходить по ссылкам на ней.

Лимит выбора Сканируемые страницы Индексируемые страницы
0 18 690 151 025 1000
1 18 690 151 025 11 400
2 18 690 151 025 7 640
3 18 690 151 025 470 760
4 18 690 151 025 2 282 155
5 18 690 151 025 9 269 631
Без ограничений 18 690 151 025 18 690 151 025

Данная схема позволяет сократить количество индексируемых страниц, но никак не помогает предотвратить расходование краулингового бюджета, что делает этот подход бесполезным.

В SEO есть ситуации (не связанные с фасетной навигацией), когда выбор “noindex, follow” оправдан, но это не тот случай.

Можно ли задать ограничение выбора с помощью robots.txt?

Как показано в тесте №9, использование метатега robots для внедрения лимита выбора – это не идеальный вариант, поскольку метатеги являются частью HTML-кода страницы. Чтобы увидеть, что страница заблокирована, краулеру нужно её загрузить. Это расходует бюджет сканирования.

Можно ли использовать вместо этого robots.txt? Этот вариант кажется лучшим выбором в данном случае, поскольку блокирует страницы от сканирования. Но можно ли использовать robots.txt для выборочного блокирования страниц на основании того, сколько вариантов было выбрано? Ответ будет зависеть от структуры URL. В некоторых случаях это будет просто, в других – сложно или вообще невозможно. Например, если ссылочная структура сайта использует полностью «непроницаемый» формат, такой как JSON с кодировкой base64:

https://example.com/products?p=WzczLCA5NCwgMTkxLCAxOThd

В данном случае вы не сможете использовать robots.txt для настройки ограничения, поскольку здесь у robots.txt нет никакого способа сообщить, сколько вариантов было выбрано. Вам нужно будет использовать метатег robots или X-Robots (оба из которых могут быть сгенерированы серверным кодом, у которого есть доступ к декодированной версии данных по запросам).

С другой стороны, если все варианты фильтрации будут приведены в строке запроса в виде списка ID, разделённых нижним подчёркиванием (например, https://example.com/products?filters=73_94_191_198), то вы сможете легко блокировать все страницы, которые имеют, например, более двух выбранных вариантов, сделав так:

User-agent: *

Disallow: /products?*filters=*_*_

Давайте проверим этот вариант.

Тест №11. Ограничение выбора с помощью robots.txt

По сути, это повтор теста №9, но теперь страницы блокируются с помощью robots.txt, а не метатега robots.

Лимит выбора Сканируемые страницы Индексируемые страницы
0 1000 1000
1 11 400 11 400
2 79 640 79 640
3 470 760 470 760
4 2 282 155 2 282 155
5 9 269 631 9 269 631
Без ограничений 18 690 151 025 18 690 151 025

Выводы:

  • Блокировка страниц на основании заданного ограничения выбора – это очень эффективный способ сократить количество страниц.
  • Внедрение этого варианта с помощью robots.txt является наилучшим выбором. Но использовать robots.txt можно только в том случае, если структура URL позволяет это делать.
  • Использование метатега robots менее эффективно в данном случае, но тоже даёт результат.

Вместо заключения

Фасетная навигация – это одна из самых сложных SEO-проблем, с которыми сталкиваются оптимизаторы. Не спешите с её реализацией, чтобы затем не пришлось устранять ошибки уже после создания сайта. Планируйте наперёд. Используйте robots.txt, анализируйте варианты выбора и «думайте» как поисковая система.

Источник: Portent
preview Как выбрать оптимизатора и принять его работу

Как выбрать оптимизатора и принять его работу

Статья призвана помочь владельцам сайтов выступить заказчиком поисковой оптимизации, получить результат и избежать ошибок
preview 50 типов ссылок и как их получить

50 типов ссылок и как их получить

В статье своими знаниями и опытом делится эксперт по линкбилдингу Кевин Роу
preview Инженер Google о скорости сайтов и пользовательском опыте

Инженер Google о скорости сайтов и пользовательском опыте

По материалам доклада сотрудника Google, известного специалиста по серверной и клиентской оптимизации Ильи Григорика на SMX Advanced 2018
preview Борьба за правильную структуру сайта

Борьба за правильную структуру сайта

Структура сайта — один из критериев, важнейших для продвижения в поисковой выдаче
preview «Сайты-ИКС» – новая «пузомерка» от Яндекса

«Сайты-ИКС» – новая «пузомерка» от Яндекса

Если ввод алгоритма «Минусинск» можно было образно назвать стремлением Яндекса вбить гвоздь в крышку гроба индустрии SEO-ссылок, то замена тИЦ на ИКС призвана сыграть роль...
preview Как оптимизировать сайт для персонализированного поиска в Google

Как оптимизировать сайт для персонализированного поиска в Google

Все люди разные. Так почему результаты поиска Google должны быть одинаковыми для каждого пользователя...