Skip to content

Improve search quality: ranking, symbol search, and result grouping#21

Merged
Joxx0r merged 1 commit intomainfrom
search-quality
Feb 8, 2026
Merged

Improve search quality: ranking, symbol search, and result grouping#21
Joxx0r merged 1 commit intomainfrom
search-quality

Conversation

@Joxx0r
Copy link
Collaborator

@Joxx0r Joxx0r commented Feb 8, 2026

Summary

  • Enhanced ranking: Moved from basic header/density scoring in zoekt-client to multi-signal ranking in API layer — adds recency weighting (mtime), symbol definition detection (class/struct/UCLASS/UFUNCTION), match density, and header/Public boosts
  • Zoekt symbol search: Added sym: query support via searchSymbols() method. /find-type and /find-member endpoints accept useZoekt=true to try Zoekt first with automatic DB fallback
  • Result grouping: Added grouped=true query param to /grep that returns results grouped by file ({ file, project, language, matches: [...] })

Key Changes

  • src/service/search-ranking.js — New module with isDefinitionLine(), recencyScore(), rankResults(), groupResultsByFile()
  • src/service/zoekt-client.js — Removed ranking from _mapResponse(), added searchSymbols()
  • src/service/api.js — Wired ranking + grouping into /grep, added Zoekt symbol search to /find-type and /find-member
  • src/service/database.js — Added getFilesMtime() batch query
  • test-search-quality.js — 38 unit tests covering all new functionality

Closes #16

Test plan

  • Run node test-search-quality.js — 38/38 tests pass
  • Manual: /grep?pattern=UPlayerController — verify definitions/recent files rank higher
  • Manual: /grep?pattern=GetWorld&grouped=true — verify file-grouped response
  • Manual: /find-type?name=APlayerController&useZoekt=true — verify Zoekt attempt with DB fallback

🤖 Generated with Claude Code

- Move result ranking from zoekt-client to API layer with enhanced signals:
  recency (mtime), symbol definition detection, match density, header/Public boost
- Add Zoekt sym: symbol search with DB fallback for /find-type and /find-member
- Add grouped=true query param to /grep for file-grouped results
- Extract ranking/grouping helpers into search-ranking.js for testability
- Add 38 unit tests covering all new functionality

Closes #16

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions
Copy link

github-actions bot commented Feb 8, 2026

@claude Please review this PR. Focus on:

  • Code quality and potential bugs
  • Security issues
  • Test coverage
  • Documentation completeness

Use the opus model for thorough analysis.

@Joxx0r Joxx0r merged commit cb16fcf into main Feb 8, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Improve search quality: ranking, symbol search, and result grouping

1 participant