Designing Search System Architecture

1. Designing Full-Text Search Architecture

ComponentDetail
EngineElasticsearch / OpenSearch / Solr / Vespa / Typesense / Meilisearch
Inverted indexTerm → docs
AnalyzerTokenize + filter (lower, stem, synonym)
Query DSLmatch, term, bool, function_score
Replicas / shardsScale + HA

2. Designing Search Indexing Strategy

ModeDetail
Full reindexSchema change; build alias-swap
IncrementalCDC/event-driven
Bulk APIBatches of 1–10MB
Refresh intervalTrade freshness vs throughput
PipelineApp → Kafka → consumer → ES

3. Designing Search Relevance and Ranking

SignalDetail
BM25Default text relevance
Field boosttitle^3 over body
Function scoringRecency, popularity decay
Learning-to-rankLightGBM/RankLib over features
A/B test rankersOnline evaluation

4. Designing Autocomplete and Typeahead

ApproachDetail
Edge n-gramsIndex "tes", "test", "testi"…
Completion suggesterFST-based; very fast
TrieIn-memory structure
Popularity weightingTop suggestions first
p99 latency<50ms for good UX

5. Designing Faceted Search and Filters

FeatureDetail
Aggregationsterms, range, date_histogram
Multi-select facetsFilter context (no scoring)
Facet countsPer-bucket doc counts
HierarchicalCategories with parent paths

6. Designing Search Pagination

MethodDetail
from/sizeSimple; deep paging expensive
search_afterCursor; preferred for deep paging
scrollSnapshot iteration (export use)
PIT (point-in-time)Stable cursor across refreshes

7. Designing Search Query Performance

LeverDetail
Filter cacheUse filter context for cacheable
Index sortingPre-sort for early termination
Doc valuesColumnar for sort/agg
Profile APIFind slow query parts
Shard sizing10–50GB per shard typical

8. Designing Fuzzy Search and Typo Tolerance

MechanismDetail
Levenshteinfuzziness=AUTO (1–2 edits)
PhoneticSoundex, Metaphone
Did-you-meanSuggester / spellcheck
Synonym setsIndex- or query-time

9. Designing Search Index Update Strategies

StrategyDetail
Alias swapBuild new index → atomic alias point
Partial updateUpdate by doc id; full doc reindex internally
Version controlOptimistic concurrency via version
BackfillFor new fields

10. Designing Search Analytics

MetricDetail
Top queriesTrending
Zero-result rateImprove coverage / synonyms
CTRPosition-aware
NDCG / MRRRanking quality
Query latencyp50/p95/p99
ElementDetail
EmbeddingsOpenAI, Cohere, sentence-transformers
Vector DBpgvector, Pinecone, Weaviate, Milvus, Qdrant; ES kNN
IndexHNSW, IVF, ScaNN
Hybrid searchBM25 + vector (RRF / weighted)
Use casesRAG, similar items, dedup

12. Designing Search Personalization

SignalDetail
User profilePast clicks, purchases
ContextLocation, time, device
Re-ranking layerPersonalize top-K
PrivacyOpt-in; anonymize signals