Алгоритм работы поиска товаров по тегам

Рейтинг: 0Ответов: 0Опубликовано: 22.03.2023

Какой самый разумный алгоритм поиска и сортировки товаров по тегам?

У нас есть категории товаров в магазине, к примеру в виде дерева:

Техника
--- Мобильные телефоны
--- Ноутбуки
--- ...
--- Смарт-часы

Сами категории хранятся в базе данных.

Не самое разумное решение в каждой категории создавать суб-категории:

"телефоны - андроид"
"телефоны - андроид - 2 ГБ ОЗУ"
"телефоны - андроид - 3 ГБ ОЗУ"
и так далее...

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

В голову приходит только следующая мысль:

  1. Таблица с самими тегами, которая включает в себя ID тега, его названием и возможно другие данные (к примеру ID категории для которой применим данный тег).

  2. Таблица с товаром, в которой для конкретной задачи необходим ID товара.

  3. Таблица, записи которой содержат ID тега и ID товара к которому привязан тег:

    product_id (ID записи в таблице продуктов) tag_id (ID тега который привязан к продукту)

Но данный вариант кажется слишком громоздким и в случаи большого числа записей банальный "where" будет работать медленно, особенно, если поиск будет осуществлен по нескольким тегам. Какие в целом существуют оптимальные способы реализации тегов товара и поиска по ним? (число товаров 100к+, у групп товаров может быть до 50 тегов).

Ответы

Ответов пока нет.