Skip to content

v0.11.0: Full-text search with relevance ranking

Latest

Choose a tag to compare

@github-actions github-actions released this 24 Aug 16:46

What's New

  • FTS5-powered search — search now runs against Orbit's full-text index instead of a brute-force scan over every message, so results come back fast even on large session libraries.
  • Smarter matching — queries match whole words and word prefixes (auth finds "authentication`), and multi-word searches match sessions where each term appears anywhere in the transcript — even across different messages.
  • Relevance ranking — while searching, results are ordered by relevance: title matches first, then sessions whose best-matching message scores highest (bm25), with recency as the tiebreaker. Clear the search box and the familiar recency ordering returns.

Notes

  • Mid-word substrings (e.g. rror matching "error") no longer match — that's the trade-off for indexed, ranked search.
  • Search results may include sessions where the query isn't a literal contiguous phrase (terms matched separately); highlighting marks literal occurrences, so those hits simply show no <mark>.

Technical

  • get_sessions builds a safe FTS5 MATCH expression from raw input — quoted prefix terms neutralize FTS5 query syntax such as (, *, NEAR
  • A ranking CTE computes each session's best bm25 rank; per-term subqueries enforce session-level AND semantics (every term must match somewhere in the session)
  • Falls back automatically to the previous LIKE scan if the FTS query ever fails
  • Removed the unused search_sessions command and search_messages query; parameterized LIMIT/OFFSET in get_sessions