@eugeneledenev

Как сделать перебор комбинаций?

Нужен алгоритм перебора(а в идеале скрипт). Есть фильтр товаров на сайте. Для каждой комбинации атрибутов формируется свой url. Нужно сформировать эти url.
Имеем: список атрибутов для каждого товара, у некоторых атрибутов есть множественные значения(например светодиодный, led, диодный), максимальное количество атрибутов, которые можно выбрать, атрибуты должны иметь четкую последовательность в соответствии с порядком сортировки( то есть из вариантов ЛПО 36Вт и 36Вт ЛПО будет только 1 вариант)
На текущий момент у товара в среднем 15-20 атрибутов, максимум можно выбрать 5, итоговое количество значений атрибутом(с учетом множественности 20-40.
Пробовал парсить сайт, все программы выдают out of memory через пару недель.
Была мысль брать каждый товар, для него формировать комбинации, записывать в БД исключая дубли, но 90% комбинаций от товара к товару будут повторяться и это просто бесполезная трата времени.
Может просто взять все атрибуты уникальные, перебрать все комбинации( к примеру 100 атрибутов, максимум 5 может быть выбрано одновременно, на знаю как посчитать кол-во комбинаций) потом проверить есть ли товар с такой комбинацией(как это сделать не через БД не знаю, а через БД запросы будут по 0,5сек отрабатываться).
Помогите, чтобы не попасть на out of memory и по возможности экономить время.
  • Вопрос задан
  • 945 просмотров
Пригласить эксперта
Ответы на вопрос 1
ArtamonovDenis
@ArtamonovDenis
Full-stack developer
Зачем заранее формировать url для каждой комбинации?
Насколько я понял, нужно делать выборку товаров в зависимости от выбранных атрибутов, т.е. фильтровать

Фильтр = форма
Каждый атрибут = чекбокс/инпут/селект
Отметили атрибуты
Отправили сабмит формы-фильтра
PHP ловит GET/POST-массив и смотрит какие были отмечены атрибуты, в зависимости от этого формирует ссылку и/или выдать результат из бд

как это сделать не через БД не знаю, а через БД запросы будут по 0,5сек отрабатываться


В любом случае нужно где-то хранить информацию и обрабатывать ее в зависимости от фильтра

Если товаров не много, тогда можно при запуске страницы с товарами создать js-объект и уже работать с ним

Либо работать с БД и настроить кеширование, тогда однинаковые запросы не будут отнимать по 0,5 сек
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы