Bird
Raised Fist0
HLDsystem_design~10 mins

Search and metadata in HLD - Interactive Code Practice

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define the main component responsible for storing metadata in a search system.

HLD
class [1]:
    def __init__(self):
        self.metadata_store = {}
Drag options to blanks, or click blank then click option'
AIndexBuilder
BMetadataStore
CQueryProcessor
DSearchEngine
Attempts:
3 left
💡 Hint
Common Mistakes
Choosing SearchEngine instead of MetadataStore
Confusing IndexBuilder with metadata storage
2fill in blank
medium

Complete the code to add a method that indexes a document's metadata.

HLD
def index_metadata(self, document_id, metadata):
    self.metadata_store[[1]] = metadata
Drag options to blanks, or click blank then click option'
Adocument_id
Bmetadata
Cindex
Ddoc
Attempts:
3 left
💡 Hint
Common Mistakes
Using metadata as the key instead of document_id
Using a generic name like index which is undefined
3fill in blank
hard

Fix the error in the method that retrieves metadata for a given document.

HLD
def get_metadata(self, document_id):
    return self.metadata_store.get([1], None)
Drag options to blanks, or click blank then click option'
Ametadata
Bdoc_id
Cdocument_id
Did
Attempts:
3 left
💡 Hint
Common Mistakes
Using metadata or id which are not keys in the store
Using doc_id which is undefined in this context
4fill in blank
hard

Fill both blanks to create a function that filters documents by a metadata key and value.

HLD
def filter_documents(self, key, value):
    return [doc_id for doc_id, meta in self.metadata_store.items() if meta.get([1]) [2] value]
Drag options to blanks, or click blank then click option'
Akey
B==
C!=
Dvalue
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'value' instead of 'key' in the first blank
Using '!=' instead of '==' for filtering matching documents
5fill in blank
hard

Fill all three blanks to build a dictionary comprehension that maps document IDs to metadata values for a specific key if the value exists.

HLD
result = {doc_id: meta.get([1]) for doc_id, meta in self.metadata_store.items() if meta.get([2]) is not [3]
Drag options to blanks, or click blank then click option'
Akey
CNone
Dvalue
Attempts:
3 left
💡 Hint
Common Mistakes
Using different keys for the two meta.get calls
Checking against 'value' instead of None

Practice

(1/5)
1. What is the primary purpose of metadata in a search system?
easy
A. To display images on the website
B. To store user passwords securely
C. To describe data and make search faster
D. To manage network connections

Solution

  1. Step 1: Understand metadata role

    Metadata provides information about data, like tags or descriptions.
  2. Step 2: Connect metadata to search

    Search engines use metadata to quickly find relevant data without scanning everything.
  3. Final Answer:

    To describe data and make search faster -> Option C
  4. Quick Check:

    Metadata = Data description for search [OK]
Hint: Metadata helps find data faster by describing it [OK]
Common Mistakes:
  • Confusing metadata with user data
  • Thinking metadata stores passwords
  • Assuming metadata manages network
2. Which of the following is a correct example of metadata used in search?
easy
A. title = 'Introduction to Cats'
B. file_size = 2048
C. user_password = '1234'
D. connection_timeout = 30

Solution

  1. Step 1: Identify metadata examples

    Metadata describes content, like titles, tags, or dates.
  2. Step 2: Check each option

    title = 'Introduction to Cats' shows a title, which is metadata describing content. Others are config or sensitive data.
  3. Final Answer:

    title = 'Introduction to Cats' -> Option A
  4. Quick Check:

    Title is metadata for search [OK]
Hint: Metadata describes content, not configs or passwords [OK]
Common Mistakes:
  • Choosing config values as metadata
  • Confusing sensitive data with metadata
  • Ignoring descriptive fields
3. Given a search system with metadata index, what is the expected output when searching for "apple" if metadata contains {"title": "apple pie", "tags": ["fruit", "dessert"]}?
medium
A. No results found
B. Returns item with title "apple pie"
C. Returns all items with tag "fruit" only
D. Returns items with tag "dessert" only

Solution

  1. Step 1: Understand search with metadata

    Search looks for matches in metadata fields like title and tags.
  2. Step 2: Check if "apple" matches metadata

    "apple" matches the title "apple pie", so the item is returned.
  3. Final Answer:

    Returns item with title "apple pie" -> Option B
  4. Quick Check:

    Search matches title containing "apple" [OK]
Hint: Search matches metadata fields containing query word [OK]
Common Mistakes:
  • Ignoring title field in search
  • Returning unrelated tags only
  • Assuming no results if exact match missing
4. A search system's metadata index is not returning expected results. Which issue below is most likely the cause?
medium
A. Database password is incorrect
B. User interface colors are dull
C. Network cables are unplugged
D. Metadata is not updated after data changes

Solution

  1. Step 1: Identify cause of search failure

    If metadata is stale, search index won't reflect latest data.
  2. Step 2: Evaluate options

    Only Metadata is not updated after data changes relates to metadata and search correctness; others are unrelated.
  3. Final Answer:

    Metadata is not updated after data changes -> Option D
  4. Quick Check:

    Stale metadata breaks search results [OK]
Hint: Keep metadata updated to ensure correct search [OK]
Common Mistakes:
  • Blaming UI or network for search logic errors
  • Ignoring metadata update process
  • Confusing unrelated system issues
5. You are designing a scalable search system for millions of users. Which approach best ensures fast search using metadata?
hard
A. Use distributed indexing with metadata shards and update indexes asynchronously
B. Store metadata in a centralized database and scan all records on each search
C. Keep metadata only on user devices and search locally
D. Disable metadata to reduce storage and search raw data only

Solution

  1. Step 1: Understand scalability needs

    Millions of users require fast, distributed search to avoid bottlenecks.
  2. Step 2: Evaluate options for scalability

    Use distributed indexing with metadata shards and update indexes asynchronously uses distributed indexing and async updates, which scales well and keeps search fast.
  3. Final Answer:

    Use distributed indexing with metadata shards and update indexes asynchronously -> Option A
  4. Quick Check:

    Distributed indexing + async updates = scalable search [OK]
Hint: Distribute metadata index and update asynchronously for scale [OK]
Common Mistakes:
  • Scanning all data centrally causes slow search
  • Relying on local device metadata limits scale
  • Disabling metadata removes search efficiency