Skip to content

Conversation

@ram-nadella
Copy link
Owner

Summary

  • Replaced fuzzy-matcher (SkimMatcherV2) with nucleo-matcher for significantly better fuzzy matching performance
  • Nucleo is a high-performance fuzzy matcher used in the Helix editor
  • All tests pass and API remains fully compatible

Performance Improvements

Benchmark results show substantial performance gains across all search operations:

Operation Performance Improvement
search_exact_match ~84% faster
search_fuzzy_match ~77% faster
search_by_symbol_count/100 ~35% faster
search_by_symbol_count/500 ~54% faster
search_by_symbol_count/1000 ~58% faster
search_by_symbol_count/5000 ~58% faster
search_by_symbol_count/10000 ~59% faster
search_no_matches ~76% faster

Changes Made

  • Updated Cargo.toml to use nucleo-matcher = "0.3.1" instead of fuzzy-matcher = "0.3"
  • Refactored src/search.rs to use nucleo's Matcher and Atom APIs
  • Maintained exact same search behavior and scoring logic (including exact match boosting)

Test Plan

  • All existing tests pass (cargo test)
  • Benchmarks show significant performance improvements (cargo bench --bench search)
  • Code formatted with cargo fmt
  • No linting issues (cargo clippy)

🤖 Generated with Claude Code

ram-nadella and others added 5 commits September 20, 2025 14:49
Migrated from fuzzy-matcher (SkimMatcherV2) to nucleo-matcher for significantly
better fuzzy matching performance. Nucleo is a high-performance fuzzy matcher
used in the Helix editor.

Performance improvements:
- search_exact_match: ~84% faster
- search_fuzzy_match: ~77% faster
- search_by_symbol_count: 35-59% faster across different sizes
- search_no_matches: ~76% faster

All tests pass and the API remains compatible with existing functionality.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
@ram-nadella ram-nadella merged commit aa8bd3d into main Sep 20, 2025
4 checks 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.

2 participants