feat: full-text search with SQLite FTS5#64
Conversation
Configure experimental database with SQLite connector for FTS. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- FTS5 virtual table for ranked full-text search - Indexes page titles, descriptions, and API operations - Fresh index on every deploy (drops and recreates tables) - FTS MATCH with prefix queries for partial matching - Results ranked by relevance via FTS5 rank function Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replaced by SQLite FTS5 via Nitro database. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Read raw MDX files and extract headings + body text - Separate FTS columns: title (10x boost), headings (5x), body (1x) - bm25 ranking for relevance-based results - Use fs/promises for async file reading Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Response includes match field (title/heading/body) - Snippet shows the matched text with surrounding context - Headings stored newline-separated for individual matching - Body snippets show ~120 chars around the match Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- /api/ready returns 503 until search index is built, 200 after - Lock file in /tmp deleted on startup for pod restart detection - Search results show match type (title/heading/body) with snippets - Matched text highlighted in accent color in both title and snippet - # prefix for heading matches - Fixed race condition with index mutex - Fixed table creation with IF NOT EXISTS - Pass items to Command to disable client-side filtering Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Rate limit exceeded
You’ve run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (8)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Covers build, Docker multi-stage, Docker Compose, Kubernetes deployment with health/readiness probes, service, ingress, Vercel and Netlify configs. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Remove unused getFirstApiUrl import - Suppress useDatabase false positive (Nitro DI, not React hook) - Suppress empty catch block on lock file cleanup Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Summary
Replace MiniSearch with SQLite FTS5 via Nitro database for full-text search across docs and API pages.
Commits
/api/readyreturns 503 until index built, search UI shows highlighted snippets with#prefix for headingsSearch features
/api/ready) for k8s — lock file in /tmp, deleted on restartTest plan
#prefix snippet/api/readyreturns 503 before first search, 200 after/api/readyreturns 503 again until re-indexed🤖 Generated with Claude Code