feat: implement lightweight full text search plugin using SQLite FTS5 (issue #83)
Added comprehensive full text search capabilities as a lightweight plugin. Key features: - SQLite FTS5-based search engine with no external dependencies - Automatic indexing via database triggers for real-time updates - Advanced query support: phrase search, boolean operators, proximity search - Complete CLI interface with search commands - Graceful fallback to LIKE queries when FTS5 unavailable - Plugin architecture integration for extensibility CLI Commands: - `markitect search init` - Initialize search indexes - `markitect search query` - Perform full text searches - `markitect search status` - View index statistics - `markitect search rebuild` - Rebuild indexes from scratch Search Features: - Content type filtering (files, schemas, all) - Result pagination and formatting options - Query validation and syntax assistance - Performance optimization and index maintenance Technical Implementation: - FTSSearchPlugin: Main search plugin class - SearchIndexer: FTS5 table management and indexing - QueryParser: Query optimization and FTS5 syntax conversion - Comprehensive error handling and fallback mechanisms - 25 test cases covering all functionality Documentation includes complete usage guide and examples. Resolves issue #83: Full text search 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
12
markitect/plugins/builtin/search/__init__.py
Normal file
12
markitect/plugins/builtin/search/__init__.py
Normal file
@@ -0,0 +1,12 @@
|
||||
"""
|
||||
Full text search plugin for MarkiTect using SQLite FTS5.
|
||||
|
||||
Provides lightweight, high-performance full text search capabilities
|
||||
as a plugin to the MarkiTect system.
|
||||
"""
|
||||
|
||||
from .fts_search import FTSSearchPlugin
|
||||
from .indexer import SearchIndexer
|
||||
from .query_parser import QueryParser
|
||||
|
||||
__all__ = ['FTSSearchPlugin', 'SearchIndexer', 'QueryParser']
|
||||
Reference in New Issue
Block a user