Skip to content

v0.3.0

Latest

Choose a tag to compare

@versenilvis versenilvis released this 05 Apr 20:25
· 13 commits to main since this release

Note

Thay đổi

Về hiệu năng

  • Thay thế sort.Slice O(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ọi unicode.IsLower/IsUpper, thay thế bằng switch trê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ừ []rune sang []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ụng sync.Pool cho các chuỗi có độ dài lên đến 128 bytes
    Sử dụng sync.Pool cho 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.go khi tìm kiếm main.go và ngược lại
  • Tích hợp FileMemory vớ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