I get asked a few times a year. What’s a good design pattern for search filters? I um, and I err, and I try and think of good ones. The problem being, filtering is an admission your search experience isn’t working.
Search should give the right result in the top three, failing that, the top five. No need for filters.
The most accurate, powerful search engine on the planet doesn’t have filters. It doesn’t expect users to need them. (Those tiny text filters at the top are barely used).
Design your search. Check your search logs, see what users are searching for, tweak the results so the obvious searches are always successful, offer mis-spellings and synonyms. Design the experience not the interaction.
Invest your effort in getting the right results and not in a complex series of check boxes. Monitor how many times your filters are used, set goals for reduced usage.
The best design pattern for filters is no filters at all.