Tôi đã nghĩ về điều này, và đã cố gắng đưa ra các giải pháp về cách làm mờ tìm kiếm cơ sở dữ liệu, ví dụ như người dùng gõ một lỗi chính tả. Bất kỳ vấn đề rõ ràng với logic đằng sau này? Nó sẽ làm việc và nó đã được thực hiện trước đây?
Bảng của chúng tôi, chúng tôi muốn tìm kiếm:
**tblArticles**
Body - Soundex_Body - CharacterCoded_Body
Vì vậy, chúng tôi lưu trữ cơ thể văn bản thô để hiển thị vật lý. Hai cột khác được sử dụng cho các tìm kiếm được tính toán trước theo cách sau:
Soundex
Phần thân được chia thành các từ và được dịch thành phiên bản soundex. IE, kết quả có thể là một cái gì đó như:
H252 B54 C23 E33... etc
Vì vậy, ai đó có thể nhập 'khủng long' và cơ thể bài viết đọc 'khủng long' cả hai đều đánh giá B26. Sau đó chúng tôi chạy một lượt THÍCH trên giá trị soundex của cụm từ tìm kiếm.
Mã nhân vật
Đưa ra một ánh xạ ký tự ánh xạ các ký tự thành số nguyên tố, IE:
h = 2
e = 3
l = 5
o = 7
p = 11
c = 13
help = 2*3*5*11 = 330
hello = 2*3*5*5*7 = 1050
hell = 2*3*5*5 = 150
hlep = 2*5*3*11 = 330
cello = 13*3*5*5*7 = 6825
Nếu người dùng có ý định nhập 'xin chào' nhưng họ đã chuyển hai hoặc nhiều ký tự xung quanh, ví dụ 'hlelo', họ sẽ đánh giá cùng một số. Chia phần thô thành các từ, nguyên tố mã hóa từng từ và lưu trữ trong cơ sở dữ liệu cung cấp cho bạn một trường giống như:
330 6825 330 1050... etc
Sau đó chúng ta có thể thích tìm kiếm trên giá trị này để phù hợp với sương mù.
Những lợi ích
- Typose được bảo vệ chống lại
- Phiên âm không đúng chính tả được bảo vệ chống lại
- Nói tiếng Anh không phải tiếng mẹ đẻ
- Sẽ hoạt động ở bất kỳ ngôn ngữ nào (nơi soundex hoạt động)
Nhận xét và suy nghĩ? Một loại tìm kiếm nhiều lớp. Tất nhiên bạn có thể trả về các giá trị trọng số để làm cho nó thậm chí tốt hơn (IE một kết hợp thân văn bản bằng chữ có giá trị hơn), nhưng đây có phải là một giải pháp tốt cho lỗi chính tả và người nói tiếng Anh không phải là người bản ngữ thực hiện tìm kiếm?