Một lớp chuẩn hóa nhỏ giúp “du lieu” tìm thấy “dữ liệu”, nhưng bạn vẫn cần giữ nguyên văn bản gốc để hiển thị.
Kết quả bạn sẽ có
Một hàm chuẩn hóa dùng cùng ở lúc lập chỉ mục và lúc tìm kiếm. Người dùng nhập “du lieu” vẫn tìm được bài có tiêu đề “Dữ liệu”. Văn bản có dấu vẫn được giữ để hiển thị.
Điều kiện: biết JavaScript cơ bản. Không cần API trả phí. Phần này không triển khai xếp hạng ngữ nghĩa hay sửa lỗi chính tả.
Bước 1 — Tách dữ liệu hiển thị và dữ liệu tìm kiếm
Lưu title gốc và searchText đã chuẩn hóa. Đừng thay trực tiếp chữ có dấu trong nội dung bài viết. Unicode normalization giúp đưa những chuỗi có biểu diễn khác nhau về dạng dễ xử lý hơn.
Bước 2 — Chuẩn hóa nhất quán
export function fold(text) {
return text.normalize('NFD')
.replace(/[\u0300-\u036f]/g, '')
.replace(/đ/g, 'd')
.replace(/Đ/g, 'D')
.toLowerCase();
}
Chữ đ cần xử lý riêng vì phép phân rã dấu không tự chuyển nó thành d. Đây là một hàm thực dụng cho văn bản tiếng Việt phổ biến; không phải bộ chuẩn hóa cho mọi hệ chữ.
Bước 3 — Tìm trước, phân trang sau
Tạo điều kiện tìm kiếm ở cơ sở dữ liệu trên toàn bộ tập bài đã xuất bản. Sau đó mới phân trang kết quả. Lọc mảng bài đang hiển thị trong trình duyệt sẽ làm người dùng bỏ lỡ bài nằm ở các trang khác.
Với nhiều từ khóa, xác định rõ bạn muốn tất cả từ đều xuất hiện hay chỉ cần một từ. Trong Mở Máy, truy vấn nhiều từ yêu cầu từng từ xuất hiện trong chỉ mục nội dung.
Bước 4 — Kiểm thử các biên
Thử “độ trễ”, “DO TRE”, “du lieu”, chuỗi chỉ có khoảng trắng và cụm từ kỹ thuật như “API”. Kiểm tra bài nháp không xuất hiện. Khi bài đổi tiêu đề hoặc nội dung, chỉ mục phải được cập nhật.
Khi cần nâng cấp
Nếu tập dữ liệu lớn, cần typo tolerance, xếp hạng hay từ đồng nghĩa, hãy đánh giá một search engine chuyên dụng. Giữ bộ kiểm thử tiếng Việt để so sánh trước và sau thay đổi. Không dùng tìm kiếm ngữ nghĩa để bỏ qua yêu cầu về quyền truy cập.
Practice checklist
0/4 completed · Sign in to save progressResources to get started
Hàm chuẩn hóa và bộ ca kiểm thửvietnamese-search.mjs
Sources & verification
1. Unicode — Normalization Forms ↗Bài biên soạn cho phiên bản đầu tiên. Tài liệu tải xuống là mẫu minh họa; không phải benchmark hay kết quả thử nghiệm độc lập.Content updated: 30 Oct 2026.
Something to correct? Send feedback to the editors.
Ask about this article
AI answers use this article and its sources. Errors are possible; check the sources.
Sign in to ask ↗