Files
snippet-manager/snip/search/engine.py
7000pctAUTO c228ac3da0
Some checks failed
CI / test (push) Has been cancelled
CI / lint (push) Has been cancelled
Initial upload: snippet-manager with CI/CD workflow
2026-03-22 11:22:27 +00:00

29 lines
763 B
Python

"""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