filtered_search
Search documentation with advanced filtering options for query, library, content type, difficulty level, and code examples to pinpoint relevant information efficiently.
Instructions
Search with advanced filtering options.
Args:
query: The search query
library: The library to search in
content_type: Filter by content type ("tutorial", "reference", "example", "guide")
difficulty_level: Filter by difficulty ("beginner", "intermediate", "advanced")
has_code_examples: Filter for content with code examples (true/false)
Returns:
Filtered search results matching specified criteria
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| content_type | No | ||
| difficulty_level | No | ||
| has_code_examples | No | ||
| library | Yes | ||
| query | Yes |
Implementation Reference
- Main handler function for the filtered_search tool. Performs semantic search and applies user-specified filters to return refined results.async def search_with_filters( self, query: str, library: str, filters: SearchFilters ) -> List[SearchResult]: """Perform search with applied filters""" # Get base search results results = await self.smart_search.semantic_search(query, library) # Apply filters filtered_results = [] for result in results: if self.passes_filters(result, filters): filtered_results.append(result) return filtered_results
- Input schema defining filter options for content type, difficulty, code examples, reading time, and language.@dataclass class SearchFilters: """Filters for refining search results""" content_type: Optional[str] = None # "tutorial", "reference", "example" difficulty_level: Optional[str] = None # "beginner", "intermediate", "advanced" has_code_examples: Optional[bool] = None max_reading_time: Optional[int] = None # in minutes language: Optional[str] = None # programming language
- Helper function that checks whether a search result matches the applied filters.def passes_filters(self, result: SearchResult, filters: SearchFilters) -> bool: """Check if a result passes all filters""" if filters.content_type and result.content_type != filters.content_type: return False if ( filters.difficulty_level and result.difficulty_level != filters.difficulty_level ): return False if filters.has_code_examples is not None: has_code = result.code_snippets_count > 0 if filters.has_code_examples != has_code: return False if ( filters.max_reading_time and result.estimated_read_time > filters.max_reading_time ): return False # Language filter would need more sophisticated detection # For now, skip language filtering return True
- src/documentation_search_enhanced/smart_search.py:473-473 (registration)Global instance creation of the FilteredSearch tool handler, wrapping the SmartSearch instance.filtered_search = FilteredSearch(smart_search)