У меня есть приложение для управления продуктами. В приложении у меня есть около 30000 продуктов с около 80 атрибутами каждый, что составляет в общей сложности более 2000 различных атрибутов (некоторые простые, например, логические, а другие, например, enum). Я хочу создать функцию, позволяющую создавать сложные фильтры, образованные последовательностью правил, и возвращать продукты, которые соответствуют правилам, и то, какое правило заставляет продукт проходить фильтр.
Например:
R1 Products where category = chair
And
R2 Products where colour = red
Or
R3 Products where colour = blue
And
R4 Products where material = wood
Return example { chair1(R1,R2,R4), chair2 (R1,R3,R4)...}
У меня нет ограничений ни по структуре базы данных, ни по технологии (я предпочитаю Postgres), потому что я могу регенерировать базу данных любым способом, который мне нужен. И у меня нет больших временных ограничений, так как фильтры будут выполняться в фоновом режиме, и я сообщу пользователю, когда будут готовы результаты.
Какой подход может иметь смысл для решения этой задачи?
Я читал о деревьях решений, но, может быть, я слишком много
решение ...
Спасибо