Home

giogio / openez-graph

public
Overview Code History Branches Pull requestsIssuesInsights
main
HomeOverview Code PRsIssues

perf(indexer): lazy FTS, fast hash, counter IDs, single timestamp

3 months ago

2444f41
Authored
JoeJoeflyn8/4/2026, 10:11:20 AM
- Skip FTS5 backfill on cold index, build lazily on first search query
  via ensureFtsReady() + index_meta flag (saves ~2.3s on Zed cold)
- Replace SHA256 with djb2 hash for chunk content hashes (100x faster,
  sufficient for change detection)
- Replace crypto.randomUUID() with monotonic counter IDs (c0, c1, ...)
  for all streaming inserts
- Single timestamp for entire cold run instead of per-batch refresh
- Add index_meta table for workspace-level metadata

Zed (2903 files): 8.5s -> 6.0s cold, 1.0s -> 0.7s warm
OpenEZ (128 files): 3.7s -> 3.1s cold, 1.0s warm

Parentb49e165

10 files changed
  • packages/core/src/retrieval.ts+1−0
  • packages/db/src/sqlite/repository.ts+25−0
  • packages/db/src/sqlite/types.ts+3−0
  • packages/db/src/sqlite/workspace-db.ts+4−0
  • packages/indexer/src/code.ts+10−3
  • packages/indexer/src/index-workspace.ts+27−10
  • packages/indexer/src/languages.ts+13−7
  • packages/indexer/src/markdown.ts+8
−2
  • packages/indexer/src/parse-core.ts+8−2
  • packages/indexer/src/parse-worker.ts+10−3