squadbrodyaga
@squadbrodyaga
帆は風を変えた

Где брать данные для фильтра для товаров в интернет магазине?

Здравствуйте, вообщем не выкупю, как работает система фильтрации товаров в интернет магазинах.

Допустим в базе данных у меня есть категория "Смартфоны"
{
  smartphones: [
    {
        "name": "iPhone 12 Mini",
        "price": 62000,
        "color": "black",
        "manufacturer": "Apple"
    },
    {
        "name": "Samsung Galaxy Fold",
        "price": 74000,
        "color": "white",
        "manufacturer": "Samsung"
    },
    ..........
  ]
}

Теперь я хочу понять откуда взять данные для фильтрации этих телефонов, вот мои варианты:

1. Нужно создать алгоритм, который пробежит по массиву телефонов и достанет все ключи и значения, а на их основе сгенерирует еще один массив/объект, для фильтра примерно с такой структурой:
dataForFilter = {
  color: ['black', 'white'],
  manufacturer: ['Apple', 'Samsung']
  ...
}

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

2. Создавать для каждой категории товаров (Телефоны, ноутбуки и тд.) свой фильтр вручную, который будет выглядеть как-то так:
{
  smartphones: {
     productList: [ ... тот же массив телефонов ... ],
     productFilter: [ 
       {
         name: "color",
         type: "checkbox",
         value: ["white", "black"] 
       },
       {
         name: "manufacturer",
         type: "checkbox",
         value: ["Apple", "Samsung"] 
       }
     ],
  }
}


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

А еще лучше, если вы покажете какой нибудь фрагмент кода)
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Гуглить по запросу "фасетный поиск". Обычно эту функции выполняет движок полнотекстового поиска, который делает первый пункт за вас.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы