Ingest pipeline (journald / Caddy / Docker-wrapped formats) with per-source state tracking (repeat dedup, out-of-order detection), named pattern tagging at ingest time, and idempotent SHA1-keyed writes. FTS5 search layer with porter stemmer, severity/source/pattern/time filters, and BM25 ranking. MCP server (FastMCP stdio) with three tools: search_logs, diagnose, list_log_sources — compatible with both Claude Code and Copilot CLI. WAL mode enabled on all connections. FTS index auto-built after ingest. MCP configs included for Claude Code (.mcp.json) and Copilot CLI (.github/copilot/mcp.json).
21 lines
669 B
Python
21 lines
669 B
Python
"""CLI: build (or update) the FTS5 full-text search index after ingest."""
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
sys.path.insert(0, str(Path(__file__).parent.parent))
|
|
|
|
from app.services.search import build_fts_index
|
|
|
|
if __name__ == "__main__":
|
|
db_path = Path(sys.argv[1]) if len(sys.argv) > 1 else Path("data/turnstone.db")
|
|
|
|
if not db_path.exists():
|
|
print(f"ERROR: database not found: {db_path}", file=sys.stderr)
|
|
print("Run ingest first: python scripts/ingest_corpus.py", file=sys.stderr)
|
|
sys.exit(1)
|
|
|
|
print(f"Building FTS index for {db_path} ...")
|
|
build_fts_index(db_path)
|
|
print("Done.")
|