ฉันคิดเกี่ยวกับเรื่องนี้และพยายามหาวิธีแก้ปัญหาเกี่ยวกับวิธีการค้นหาฐานข้อมูลที่คลุมเครือหากผู้ใช้พิมพ์ตัวอย่างการสะกดผิด มีปัญหาอะไรที่จ้องมองด้วยตรรกะที่อยู่เบื้องหลังสิ่งนี้? มันจะทำงานและเคยทำมาก่อนหรือไม่
ตารางเราต้องการค้นหา:
**tblArticles**
Body - Soundex_Body - CharacterCoded_Body
ดังนั้นเราจึงจัดเก็บเนื้อหาข้อความดิบสำหรับการแสดงผลทางกายภาพ อีก 2 คอลัมน์ใช้สำหรับการค้นหาซึ่งคำนวณล่วงหน้าด้วยวิธีต่อไปนี้:
Soundex
ร่างกายแบ่งออกเป็นคำพูดและแปลเป็นเวอร์ชั่นซาวด์ IE เนื้อหาที่ได้อาจเป็นดังนี้:
H252 B54 C23 E33... etc
ดังนั้นบางคนอาจเข้าสู่ 'dinosore' และเนื้อหาของบทความอ่านว่า 'ไดโนเสาร์' สิ่งเหล่านี้ทั้งคู่ประเมินเป็น 26 บาท จากนั้นเราจะเรียกใช้ LIKE บนค่า soundex ของข้อความค้นหา
รหัสตัวละคร
รับการทำแผนที่ตัวละครที่แมปตัวอักษรกับตัวเลขสำคัญ 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
หากผู้ใช้หมายถึงพิมพ์ 'hello' แต่พวกเขาสลับอักขระอย่างน้อยสองตัวเช่น 'hlelo' พวกเขาจะประเมินเป็นหมายเลขเดียวกัน แยกเนื้อหาดิบเป็นคำให้เข้ารหัสทุกคำและเก็บไว้ในฐานข้อมูลโดยให้ฟิลด์ที่มีลักษณะดังนี้:
330 6825 330 1050... etc
จากนั้นเราสามารถค้นหาค่านี้เพื่อจับคู่กับ mistypes
ประโยชน์ที่ได้รับ
- Typos ป้องกัน
- ป้องกันการสะกดที่ไม่ถูกต้องตามการออกเสียง
- ไม่ใช่เจ้าของภาษาพูดภาษาอังกฤษได้ดี
- จะทำงานในภาษาใดก็ได้ (ที่ soundex ทำงาน)
ความคิดเห็นและความคิด? การค้นหาแบบหลายชั้น แน่นอนว่าคุณสามารถคืนค่าน้ำหนักเพื่อทำให้ดียิ่งขึ้น (IE เป็นตัวอักษรที่ตรงกับตัวอักษรมีค่ามากกว่า) แต่นี่เป็นวิธีแก้ปัญหาการสะกดคำที่ผิด