Try a natural-language query

Queries are parsed against the taxonomy first — deterministic, explainable and reusable as URL state — then widened with free text. Whatever the parser decides is shown back to you as chips you can remove.