Quick Answer: The best method is to keep faceted navigation crawlable for users but non-indexable for search engines: use clean, static local landing pages for primary intent, and make filter combinations either noindex, canonicalized to the parent page, or blocked from crawl when they create thin or duplicate URLs. Pair that with a strict parameter strategy, server-side rendering for indexable pages only, and internal linking that prioritizes a limited set of high-value local facets.
To prevent index bloat on local faceted navigation, treat each facet as a potential search asset only if it has distinct demand, sufficient content depth, and a unique local intent. Otherwise, allow the interface to function for users while controlling crawl paths through consistent URL rules, canonical tags, meta robots noindex on low-value combinations, and selective robots.txt or parameter handling where appropriate. The most effective architecture is a tiered system: index only your core city/service pages and a small number of strategically chosen facet pages, while suppressing infinite combinations that would dilute crawl budget and create duplicate or near-duplicate pages. This preserves discoverability for high-intent local queries without polluting the index with low-value permutations.