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

Для решения проблемы используются так называемые "фасеты, управляемые данными" (Data-driven facets). По сути это автоматическая генерация (или сокрытие) категорий на основе информации об имеющихся в каталоге товарах. В рамках автоматического подхода мы не ограничены какими-то разделами или видами классификаторов – в соответствии с потребностями могут формироваться линейные, иерархические, ограниченные и неограниченные списки.

Для иллюстрации проблемы можно привести пример c сайта интернет-магазина "Кораблик" (www.korablik.ru):

В списке категорий на приведенном примере имеется категория "Снегокаты". Однако, заглянув внутрь этой категории, мы видим, что в ней нет ни одного товара.

Во избежание таких казусов достаточно автоматически скрывать все категории, в которых нет никаких товаров в настоящий момент.

Более сложный пример, взятый с сайта магазина O'KEY (www.okeydostavka.ru), иллюстрирует неудобства, которые могут возникнуть у пользователя в несколько иной ситуации при отсутствии автоматической генерации списка подкатегорий:

 

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

Разберемся несколько подробнее в том, откуда может взяться список Производителей в предлагаемом примере. Самый простой вариант – предварительное формирование статического списка с автоматическим сокрытием тех производителей, товары которых в данный момент в магазине отсутствуют или не соответствуют заданным критериям поиска. Но более логичным и современным с точки зрения построения непротиворечивой системы навигации будет динамическое формирование данного списка на основе анализа или, как это иногда называют, "просеивания" (sift) данных из карточек всех товаров, которые соответствуют первичному критерию отбора (родительской категории). В таком случае появление в магазине товара от нового производителя не требует ручного редактирования классификатора – ведь классификатор формируется автоматически из данных о производителе в карточке товара. 

Автоматическая генерация категорий по данным о товарах очевидно полезна и как средство улучшения юзабилити (качества и скорости навигации посетителей по сайту), и как решение по снижению нагрузки на службу сопровождения, т.к. устраняется необходимость ручного ведения классификатора. Но автоматизация порождает и некоторые неочевидные вопросы, о которых следует задуматься на этапе реализации. К примеру, следует обратить внимание на порядок сортировки этих категорий, а также на их предельное количество в списке. На первый взгляд при проектировании подобного функционала в системе навигации напрашивается банальная сортировка по алфавиту. Однако, для управления продажами может оказаться полезным использование и более сложных критериев. Например, это может быть популярность, число товаров в категории, маркетинговые приоритеты, маржинальность и пр. Следует также учитывать психологический аспект – увидев список из нескольких десятков категорий, пользователь может растеряться, а лишние затруднения обычно тормозят покупки. На практике списки из 5-8 категорий получаются вполне читаемыми, а вот при большем размере целесообразно осуществлять группировку низкоприоритетных категорий (пункт "Другие..." в приведенном выше примере).

При слишком большом количестве категорий существует еще одна практичная техника – определение диапазонов (Range refinements). В этом случае, вместо составления полного списка категорий по всем разнообразным значениям какого-либо признака (свойства) из карточек товаров, происходит автоматическая группировка по диапазонам. Это могут быть как диапазоны чисел (100-200, 201-300, ... ), так и диапазоны букв (A-Г, Д-К, ...). Вернемся к примеру с магазином продуктов. В нем мы видим, что фильтрация по цене доступна в виде свободно задаваемого пользователем диапазона (от и до). Но анализируя цены из карточек товаров можно автоматически строить набор готовых ссылок, которые будут срабатывать по одному клику, как и в фильтре Производителей:

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

Следующий пример сайта интернет-магазина Apolonka.ru (www.apolonka.ru) иллюстрирует еще одну особенность, которая возникает при автоматической генерации подкатегорий:

В данном примере автоматически генерируется список возможных цветов товаров на основании данных из их описаний. Можно заметить, что в этом списке одновременно присутствуют такие цвета как "розовый" и "малиновый". Но с точки зрения обычного потребителя эти цвета совершенно идентичны или, во всяком случае, предельно похожи. Их разделение вероятно произошло исключительно из-за разного подхода разных поставщиков к описанию цвета. Выходом тут является использование групп синонимов при автоматическом формировании списков категорий. Если учесть, что "розовый = малиновый", "США = Соединенные Штаты = Соединенные штаты Америки", "пластик = пластмасса" и т.п., то список категорий (измерений) будет получаться короче и удобнее для пользователя.