diff --git a/snip/search/engine.py b/snip/search/engine.py new file mode 100644 index 0000000..9a6ebe1 --- /dev/null +++ b/snip/search/engine.py @@ -0,0 +1,28 @@ +"""FTS5 search engine for snippets.""" + +from typing import Any + +from snip.db.database import Database + + +class SearchEngine: + def __init__(self, db: Database): + self.db = db + + def search( + self, + query: str, + limit: int = 50, + language: str | None = None, + tag: str | None = None, + ) -> list[dict[str, Any]]: + """Search snippets using FTS5.""" + return self.db.search_snippets(query, limit=limit, language=language, tag=tag) + + def highlight(self, text: str, query: str) -> str: + """Add highlighting markers around matched terms.""" + terms = query.split() + result = text + for term in terms: + result = result.replace(term, f"**{term}**") + return result