---
title: "Discussion on \"System Design Drill Day 16: Product Search, Ranking and Typeahead\" | Hashnode"
description: "Discussion on \"System Design Drill Day 16: Product Search, Ranking and Typeahead\". How to build product search and autocomplete: inverted indexes, analyzers, BM25 ranking, keeping the index in sync and fast typeahead."
url: "https://hashnode.com/posts/system-design-drill-day-16-product-search-ranking-and-typeahead/6af98c0ea00b30bc633fb5b6"
---

[Feed](https://hashnode.com/feed) /

Discussion

# [System Design Drill Day 16: Product Search, Ranking and Typeahead](https://blog.anishansari.com.np/system-design-drill-day-16-product-search-ranking-and-typeahead?utm_source=hashnode&utm_medium=feed)

How to build product search and autocomplete: inverted indexes, analyzers, BM25 ranking, keeping the index in sync and fast typeahead.

6h ago · 8 min read · blog.anishansari.com.np  
Read the article

-   [#system-design](https://hashnode.com/tag/system-design)
-   [#elasticsearch](https://hashnode.com/tag/elasticsearch)
-   [#laravel](https://hashnode.com/tag/laravel)
-   [#redis](https://hashnode.com/tag/redis)
-   [#interview-preparation](https://hashnode.com/tag/interview-preparation)

## Written by

[Anish Ansari](https://hashnode.com/@anish78)

@anish78 · kathmandu, Nepal

  
[View profile](https://hashnode.com/@anish78)

Food,Code and Cloud Computing. You can support here :https://www.buymeacoffee.com/anishansari

## Responses 1

Markdown supported · ⌘↵ to post

[OneLifeVibe](https://hashnode.com/@onelifevibe)

[5h ago](https://hashnode.com/posts/system-design-drill-day-16-product-search-ranking-and-typeahead/6af98c0ea00b30bc633fb5b6/comment/6af993d3e3b7122a5444aee7)

The two lane sync idea is the part I will remember from this drill. Sending price and stock through a high priority queue while bulk imports wait in their own low priority lane explains the stale price example clearly. A search result at NPR 1,200 that is really NPR 1,350 at checkout is exactly the kind of bug that erodes trust. I also liked the typeahead math. Doing the heavy counting hourly and leaving each keystroke as one Redis GET makes the 50 to 100 ms budget feel achievable instead of aspirational.
