46 - Search
Overview
Architecture Diagram
┌──────────────────────────────────────────────────────────────────────────────┐
│ Search Architecture │
└──────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│ Search Request │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ React UI │ │ REST API │ │ MCP Tools │ │
│ │ /search │ │ /api/search │ │ search_inst │ │
│ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ │
│ │ │ │ │
│ └────────────────────┼────────────────────┘ │
│ │ │
│ Search Service │
│ │ │
└────────────────────────────────┼────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ BrokerSymbolCache (Singleton) │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ In-Memory Data Structures │ │
│ │ │ │
│ │ symbols_list[] - All symbols for iteration │ │
│ │ symbol_index{} - symbol → data (O(1) lookup) │ │
│ │ exchange_index{} - exchange → [symbols] (filtered search) │ │
│ │ type_index{} - instrument_type → [symbols] │ │
│ │ expiry_index{} - underlying → [expiry_dates] │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌───────────────┴───────────────┐ │
│ │ │ │
│ Cache Hit Cache Miss │
│ │ │ │
│ ▼ ▼ │
│ Return from memory Query database │
│ (microseconds) (milliseconds) │
│ │ │
│ ▼ │
│ Update cache │
│ │
└─────────────────────────────────────────────────────────────────────────────┘Cache Architecture
Singleton Pattern
Index Structures
Search Types
Basic Symbol Search
FNO Search with Filters
Exact Lookup (O(1))
Database Fallback
Cache Loading
Initial Load
Cache Refresh
API Endpoints
Search Symbols
Search F&O
Get Expiries
Frontend Integration
Search Component
F&O Filter Component
Performance Characteristics
Operation
Time Complexity
Notes
Key Files Reference
File
Purpose
Last updated