Design Faceted Product Search at Large Scale
Company: Amazon
Role: Software Engineer
Category: System Design
Difficulty: medium
Interview Round: Onsite
Design product search that supports free-text queries plus criteria such as price range, category, and nested subcategory. The catalog and request volume are large, filters can be combined, and results need deterministic pagination.
### Constraints & Assumptions
- Product price and availability change more often than most descriptive fields.
- A product may belong to more than one taxonomy node.
- The design must explain indexing, query execution, ranking, and update propagation.
- Use qualitative scale assumptions unless the interviewer supplies concrete numbers.
### Clarifying Questions to Ask
- Are results keyword-ranked, filter-only, or a blend of relevance and business rules?
- How fresh must price and availability be in search results?
- Are facet counts required for every query, and do users need locale-specific prices?
### What a Strong Answer Covers
- A source-of-truth catalog separated from a denormalized search index.
- Exact and range fields for taxonomy and price, plus analyzed text fields for searchable content.
- A query plan that applies filters, ranking, stable tie-breaks, and cursor pagination.
- Incremental indexing with version checks, replay, reconciliation, and a strategy for stale price data.
- Taxonomy evolution, multi-region serving, hot queries, cache boundaries, overload behavior, and quality metrics.
### Follow-up Questions
- How would you change the design if price must be exact at checkout but search may be slightly stale?
- How would you reparent a large subcategory without blocking search?
- How would you detect that one filter combination silently returns incomplete results?
Quick Answer: Design large-scale product search with free-text relevance, price and taxonomy filters, facet counts, and deterministic pagination. Explain index structure, query execution, ranking, catalog updates, and how rapidly changing price or availability reaches search results.