Overview
Compose search results across all three layers via intersection and re-ranking.
Module: crates/rskim-search/src/compound/intersection.rs (~150 lines)
Algorithm
- Each layer returns Vec<(FileId, Score)>
- Lexical + AST → intersect (keep only files in both)
- Temporal → re-rank (multiply/adjust scores, don't filter)
- Empty intersection → empty results (not error)
Dependencies
Acceptance Criteria
Implementation Guidelines Checklist
Wave 3g (#199) follow-up:
#199 ships an interim file-set filter: the AST-matching FileId set is applied as `file_filter` on the lexical query (lexical ranking/snippets/line numbers preserved; AST acts as a pure filter, no composite re-ranking). #198 should formalize true intersection + composite cross-layer ranking.
Overview
Compose search results across all three layers via intersection and re-ranking.
Module:
crates/rskim-search/src/compound/intersection.rs(~150 lines)Algorithm
Dependencies
Acceptance Criteria
Implementation Guidelines Checklist
Wave 3g (#199) follow-up:
#199 ships an interim file-set filter: the AST-matching FileId set is applied as `file_filter` on the lexical query (lexical ranking/snippets/line numbers preserved; AST acts as a pure filter, no composite re-ranking). #198 should formalize true intersection + composite cross-layer ranking.