เราได้พัฒนาแอพพลิเคชั่นบนเว็บสำหรับการจับคู่ชื่อ มันทำงานโดยการแบ่งชื่อออกเป็นส่วน ๆ และค่าSoundexของแต่ละส่วนจะถูกเก็บไว้ในฐานข้อมูล เมตริก Levenshtein ระยะทางที่ใช้ในการสมัครเปอร์เซ็นต์การจับคู่ของเสียงเช่นเดียวกับการสะกดคำกับชื่อที่กำหนด
ที่รันไทม์เราโหลดเร็กคอร์ดทั้งหมดลงในหน่วยความจำและใช้ระยะทาง Levenshtein กับค่า Soundex ทั้งหมดและการสะกดคำของส่วนทั้งหมดของชื่อทั้งหมด
สิ่งนี้ใช้ได้ดีในตอนแรกเพราะมีชื่อสูงสุด 20,000 ชื่อ แต่ตอนนี้ลูกค้าของเรารายหนึ่งมีชื่อ 30 ล้านชื่อ การโหลดรายการขนาดใหญ่นี้ลงในหน่วยความจำสำหรับคำขอแต่ละครั้งและการใช้การจับคู่ประเภทนี้เป็นวิธีที่น่าสมเพชโดยใช้หน่วยความจำและเวลาดำเนินการจำนวนมาก
เรากำลังมองหาคำแนะนำในการค้นหาฐานข้อมูล 30 ล้านรายการขึ้นไปในอนาคตอันใกล้นี้ด้วยการจับคู่เปอร์เซ็นต์ของเสียงและการสะกดคำ
ฟังก์ชั่นหลัก
ผู้ใช้ปลายทางป้อนชื่อที่จะจับคู่และเปอร์เซ็นต์ขั้นต่ำ เราควรจะแสดงชื่อเหล่านั้นทั้งหมดในฐานข้อมูลที่ส่วนใดส่วนหนึ่งของชื่อตรงกับส่วนใดส่วนหนึ่งของชื่อที่กำหนดจนถึงเปอร์เซ็นต์ที่กำหนด ไม่จำเป็นต้องใช้ชื่อเต็มในการจับคู่ส่วนใดส่วนหนึ่งหากตรงกันไม่เกินเปอร์เซ็นต์ก็จะสำเร็จ ตัวอย่างเช่น.
Given Name: Helen Hunt
Name in DB: Holly Hunter
ทั้งสองส่วนของชื่อทั้งสองไม่ตรงกันอย่างแน่นอน แต่ไม่เกินขอบเขตให้เราสมมติ 80% ดังนั้นหากผู้ใช้ป้อน 80% ดังนั้นชื่อใน DB จะต้องแสดงเป็นชื่อที่ตรงกัน