Search capabilities
Natural language
Search using natural language queries in Greek. The system understands context and extracts filters automatically.
Smart filters
Filter by city, speaker, party, topic, date range, and geographic location with automatic extraction from queries.
Semantic search
Find conceptually similar content even without exact keyword matches using AI-powered semantic understanding.
Geographic search
Search for subjects near specific locations with configurable distance radius.
How search works
The search system uses Elasticsearch with RRF (Reciprocal Rank Fusion) to combine multiple search strategies:Query processing
Natural language queries are analyzed to extract filters like city names, person names, date ranges, and locations.
Multi-strategy search
The system runs multiple search retrievers in parallel:
- Keyword search on subject names, descriptions, and transcripts
- Semantic search using AI embeddings for conceptual matching
- Geographic search for location-based queries
Result ranking
RRF combines results from all strategies, balancing keyword relevance with semantic similarity.
Search query structure
The search API accepts comprehensive query parameters:Automatic filter extraction
The system automatically extracts filters from natural language queries:- City extraction
- Date extraction
- Location extraction
Queries mentioning city names are automatically filtered:The system normalizes city names with diacritics and Greek characters.
Query: “Τι συζητήθηκε στην Αθήνα για τα πάρκα;”Extracted:
cityIds: ["athens-id"]src/lib/search/filters.ts
Search ranking
Results are ranked using field boosting to prioritize important content:Nested queries for speaker segments and contributions use a boost of
2 to balance transcript content with subject metadata.RRF parameters
Rank fusion is controlled by:rank_window_size: 100 (default) - Number of top results to consider from each retrieverrank_constant: 60 (default) - Higher values favor top-ranked results
src/lib/search/query.ts:240-242
Semantic search
Enable AI-powered semantic search for conceptual matching:How semantic search works
How semantic search works
When enabled, the system adds a semantic retriever that searches using AI embeddings:This finds results that are conceptually similar even if they use different words. For example, searching for “κυκλοφοριακή συμφόρηση” (traffic congestion) might also find subjects about “κίνηση” (traffic flow) or “μποτιλιάρισμα” (traffic jams).
Search result types
The search API returns different result types based on thedetailed configuration:
- Light results (default)
- Detailed results
Lightweight results for list views:Fast and efficient for displaying search results in lists.
src/lib/search/types.ts and src/lib/search/index.ts:242-266
Retry logic
The search system includes automatic retry with exponential backoff:src/lib/search/retry.ts
Failed searches are automatically retried up to 3 times with exponential backoff (2s, 4s, 8s delays).
Configuration
Set up search in your environment:Search analytics
The system logs essential search analytics:src/lib/search/index.ts:42-94
Search logs use
[Search Analytics] prefix and are always visible, unlike verbose debug logs.Performance tips
Use pagination
Use pagination
Always paginate results to avoid loading too much data:
Filter early
Filter early
Apply filters to reduce the search space before full-text search:
Use light results
Use light results
Only request detailed results when you need full transcript text:
API reference
Main search function from
src/lib/search/index.tsNext steps
Transcription
Learn how meetings are transcribed for search
AI summaries
Generate summaries from search results
Notifications
Get notified about new content matching your searches
API reference
Explore the full search API