Repository navigation
Note
Thay đổi
Về hiệu năng
- Thay thế
sort.SliceO(NlogN) bằng giải thuật sắp xếp một phần dùng Min-heap O(Nlog 20), giúp giảm chi phí sắp xếp xuống ~10 lần trên các tập kết quả lớn - Nâng cấp tìm kiếm có bộ lọc từ đơn luồng lên đa nhân (parallel), đạt hiệu suất tương đương với
FuzzyFindParallel - Bỏ qua hoàn toàn bước sắp xếp lại khi không có các chỉ số tăng điểm về Memory/Context nào đang hoạt động
Loại bỏ các lệnh gọiunicode.IsLower/IsUpper, thay thế bằngswitchtrên byte để nhận diện word boundary - Chuyển đổi các thao tác tìm kiếm cốt lõi từ
[]runesang[]byte, giảm chu kỳ xử lý của CPU và áp lực lên bộ nhớ
Sử dụng thuật toán Jaro-Winkler hiệu suất cao sử dụngsync.Poolcho các chuỗi có độ dài lên đến 128 bytes
Sử dụngsync.Poolcho các buffer điểm số để loại bỏ tình trạng tranh chấp dữ liệu trong khi tìm kiếm đồng thời
Hệ thống tính điểm mới
- Hệ thống tính điểm 4 tầng:
- Tầng 1 (+1.000.000): Khớp tiền tố hoàn hảo (truy vấn nằm ngay đầu tên file).
- Tầng 2 (+500.000): Khớp chứa ký tự (tất cả ký tự trong truy vấn đều xuất hiện trong tên file ngắn, giúp bắt được lỗi đảo ký tự như
main->mian). - Tầng 3 (+200%): Khớp một phần tên file (khớp ít nhất 1 ký tự trong phần tên file).
- Tầng 4 (phạt điểm): Chỉ khớp trong đường dẫn (bị trừ điểm dựa trên độ dài đường dẫn).
- Xử lý đảo ký tự: Đếm tần suất ký tự không theo thứ tự trong tên file giúp tìm thấy
mian.gokhi tìm kiếmmain.govà ngược lại - Tích hợp
FileMemoryvới cơ chế giảm điểm theo thời gian để ưu tiên các file thường xuyên được chọn
Filtering
- Bitset index có khả năng chịu lỗi typo (cho phép thiếu 1-2 ký tự đối với các truy vấn dài)
- Các ký tự xuất hiện trong 85& số file sẽ bị loại khỏi chỉ mục để giảm nhiễu
DeleteFileđánh dấu các file đã xoá vào Bin thay vì build lại
Full Changelog: v0.2.0...v0.3.0