Hi there, I do a mix of filtering on my cocktail recipe app KnowThyDrink - Search Cocktails (use the filters to play around).
I have found the best way to handle multi-constraint searches like this is ensuring the data is structured properly. I have a combination of fields on my recipe datatype for things like total calories, lists of “Characteristics” (an option set), "Allergens (option set), etc, but I also have a field of type text that lists all the keywords a user may be searching for (in this case, recipe name, ingredient names, the type of liquor, etc).
I have a series of properties on my reusable element, all of type recipe (list). The first is the simple constraint:
Recipe-List (with constraints)
Do a search for Recipe
The second property’s data is the previous data, filtered further:
Recipe-List-Filtered:
Recipe-List's List of Recipes: Filtered
What you can then do if you have a series of ANY conditions, is some additional :filtered searches on the Recipe-list-filtered data, but merge them all together - for example:
Recipe-List-Filtered's List of Recipes: Filtered: Merged with: Recipe-List-Filtered's List of Recipes: Filtered
etc.
One thing to note - using the ‘Filtered’ does not typically slow down the search unless you were to introduce a complex search query like ‘Advanced’. On it’s own, ‘Filtered’ behaves just like adding constraints to a search.
My suggestion is to input some dummy data you understand, and start playing around with the filtering until you get it to behave like you expect. There will be trial and error, but this seems reasonably possible.