Imagine I have a set of houses I want to sell and I want to present then on a website. The user should be able to filter the house they want by price, city, number of floors, area etc. However, I don't want it to be like this:
First select price only, then you can select city and only after that can you select the number of floors etc.
I want the user to be able to pick the order of attributes he wants.
For each iteration (attribute selection) the set of remaining attributes will have a limited range depending on the previous interaction and so on.
I have seen this implemented on some sale sites but I don't know how this is implemented, specifically with regards to the the data structure.
It doesn't look easy to add new houses for example. It feels like there is a complicated combination of binary trees and linked lists but there is probably a far better way that I haven't figured out.