
ผมคิดว่าแบบนี้ก็น่าจะใช้ได้นะครับเพียงแต่ต้องมีการเก็บข้อมูลนานหน่อย
อย่างสมมติ
- ผู้ใช้งานต้องการจะค้นหาคำว่า `นักศึกษา` แต่พิมพ์ผิดเป็น `oydL7dKk` เพราะลืมสลับระหว่างภาษาไทยและอังกฤษ
- เมื่อระบบค้นหาในครั้งแรก ยังไงก็ไม่เจอแน่นอน แต่ระบบก็จะเก็บไว้ว่ามีการค้นหาคำนี้น่ะ และให้โอกาสผู้ใช้งาน ค้นหาอีกครั้ง
try again search: นักศึกษา
- เมื่อผู้ใช้งานป้อนคำที่จะค้นหาใหม่ และเมื่อระบบค้นหาเจอ ก็ให้ทำการ เชื่อมโยงคำๆ นี้ว่าผู้ใช้งานต้องการผลลัพธ์อย่างนี้
failure word => oydL7dKk, success word => นักศึกษา
- และให้ระบบ เก็บค่าน้ำหนักของคำที่ค้นเจอ และหากว่ามีการค้นหาคำๆ นี้หลายๆ ครั้งเราก็เก็บค่าที่ถูกต้อง และให้น้ำหนักไปเรื่อยๆ
failure word => oydL7dKk, success word => นักศึกษา, weight => 1 point
สุดท้ายเมื่อผู้ใช้งาน ค้นหาคำแล้วไม่เจอผลลัพธ์ เราก็นำคำค้นหามาตรวจสอบกับรายการเดิมๆ และเลือก suggest คำที่มีน้ำหนักมากที่สุดให้
ประมาณนี้ครับ