Files
schema2mock/snip/search/engine.py

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