Фильтр дубликатов

Описание

Фильтр дубликатов — это модуль, который предотвращает повторное отображение одних и тех же рекомендаций на странице. Он работает, сохраняя идентификаторы (ItemId) уже показанных товаров и исключая их из новых наборов рекомендаций.

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

🚧

Обратите внимание

Модуль фильтра дубликатов используется не во всех блоках. Его наличие зависит от конфигурации конкретного блока и сценария. Поэтому удаление фильтра актуально не для всех случаев.

Зачем нужен фильтр дубликатов?

Фильтр дубликатов решает несколько ключевых задач:

  • Уникальность рекомендаций:
    Если на странице есть несколько блоков, например, "Похожие товары" и "Часто покупаемые вместе", фильтр гарантирует, что одни и те же товары не будут отображаться в каждом из них. Это делает рекомендации более интересными и полезными для пользователя.
  • Избежание повторов:
    Повторяющиеся товары в разных частях страницы могут раздражать пользователя, снижая ценность рекомендаций и общее впечатление от интерфейса.
  • Оптимизация восприятия:
    Разнообразие контента помогает удерживать внимание пользователя и повышает вероятность взаимодействия с рекомендациями.

Как работает фильтр, когда на странице два блока?

Когда на странице одновременно отображается два или более блока рекомендаций, фильтр дубликатов работает следующим образом (пример):

  1. В первом блоке ("Похожие товары") отображаются товары с ItemId: 101, 102, 103.
  2. Во втором блоке ("Часто покупаемые вместе") фильтр исключает эти же товары (101, 102, 103) и показывает только новые, например, 104, 105, 106.

В этом случае сбрасывать фильтр не нужно, потому что его основная цель — поддерживать уникальность между разными блоками на одной странице. Удаление дубликатов здесь работает в пользу пользователя, обеспечивая разнообразие предложений. Если сбросить фильтр с помощью команды delete retailrocket.modules.duplicates;, то во втором блоке могут появиться товары из первого, что нарушит логику уникальности.

Зачем и когда сбрасывать фильтр дубликатов?

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

  • Обновление одного блока:
    Допустим, пользователь добавил товар в корзину, и блок _"Рекомендации к корзине" _должен обновиться. Фильтр дубликатов может посчитать новые рекомендации дубликатами ранее показанных товаров (по их ItemId) и исключить их. В результате блок может остаться пустым или заполниться некорректно.
  • Пример: Если в первом рендере блока показаны товары 101 и 102, а при обновлении предлагаются 101 и 103, фильтр исключит 101 как дубликат, и пользователь увидит только 103 или ничего, если других вариантов нет.

Для решения этой проблемы используется команда delete retailrocket.modules.duplicates;. Она сбрасывает фильтр, очищая список сохраненных идентификаторов. После этого блок может показать свежий контент, даже если некоторые товары уже были отображены ранее.

Итог

  • Для нескольких блоков на странице:
    Фильтр дубликатов автоматически исключает повторы между блоками, сохраняя разнообразие. Удалять дубликаты в этом случае не нужно — это его штатная работа.
  • Для обновления одного блока:
    Если блок рендерится заново (например, при изменении состояния страницы), фильтр может мешать, исключая новые рекомендации. Сброс фильтра через delete retailrocket.modules.duplicates; позволяет показать полный набор свежих рекомендаций, даже если они частично совпадают с предыдущими.

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