High-level Design of the Typeahead Suggestion System
Get an overview of the high-level design of the typeahead suggestion system.
We'll cover the following
High-level design
According to our requirements, the system shouldn’t just suggest queries in real time with minimum latency but should also store the new search queries in the database. This way, the user gets suggestions based on popular and recent searches.
Our proposed system should do the following:
- Provide suggestions based on the search history of the user.
- Store all the new and trending queries in the database to include them in the list of suggestions.
When a user starts typing a query, every typed character hits one of the application servers. Let’s assume that we have a suggestions service that obtains the top ten suggestions from the cache, Redis, and returns them as a response to the client. In addition to this, suppose we have another service known as an assembler. An assembler collects the user searches, applies some analytics to rank the searches, and stores them in a NoSQL database that’s distributed across several nodes.