การปรับปรุงการค้นหาในแอปเว็บของคุณ: การจัดอันดับผลการค้นหา ทำได้ง่าย

ในยุคดิจิทัลในปัจจุบัน การให้ผลการค้นหาที่รวดเร็วและเกี่ยวข้องกับผู้ใช้ในแอปพลิเคชันเว็บของคุณเป็นสิ่งสำคัญ อย่างไรก็ตาม ปัญหาสามารถเกิดขึ้น โดยเฉพาะอย่างยิ่งในเรื่องของประสิทธิภาพเมื่อมีการจัดการกับหลายคำสำคัญหรือโทเคนในการค้นหา นักพัฒนาหลายคนเผชิญกับความท้าทายทั่วไป: วิธีในการจัดอันดับและดึงผลลัพธ์อย่างมีประสิทธิภาพตามโทเคนที่กำหนด ในบล็อกโพสต์นี้ เราจะเจาะลึกวิธีการจัดการการค้นหาคำสำคัญอย่างมีประสิทธิภาพในขณะที่ปรับปรุงประสิทธิภาพโดยใช้โซลูชัน MySQL

ปัญหา: การจัดอันดับผลการค้นหา

เมื่อผู้ใช้ป้อนคำค้นหาหลายคำ แอปพลิเคชันเว็บต้อง:

  • ค้นหาความเข้ากันได้ตามโทเคนเหล่านี้
  • ดึงผลลัพธ์หนึ่งรายการสำหรับแต่ละโทเคน แม้ว่าจะเป็น ID รายการเดียวกันหลายครั้ง (ตัวอย่างเช่น หาก “see spot run” มี ID รายการเป็น 1 มันควรปรากฏสามครั้ง)
  • จัดอันดับผลลัพธ์โดยการมอบคะแนนสำหรับการจับคู่โทเคนแต่ละรายการ จัดเรียงตามคะแนนเหล่านี้และใช้วันที่เป็นวิธีการจัดเรียงรองหากจำเป็น

การวิเคราะห์วิธีการปัจจุบัน

  1. การค้นหาหลายรายการ: ปัจจุบัน นักพัฒนาหลายคนอาจรันคำค้นหาที่แยกกันสำหรับแต่ละโทเคน ซึ่งอาจไม่เกิดประสิทธิภาพสูงสุด
  2. ผลลัพธ์ที่ต้องการ: คุณต้องการทำให้กระบวนการนี้สั้นลงให้เป็นคำค้นหาเดียวในขณะเดียวกันก็สามารถรับผลลัพธ์ที่รวมถึงการซ้ำซ้อนของ ID รายการตามที่ตรงกับโทเคนได้

โซลูชัน: การใช้ UNION ALL

แทนที่จะรันคำค้นหาแยกกันสำหรับแต่ละโทเคน วิธีการที่มีประสิทธิภาพมากกว่าคือการใช้ UNION ALL ใน MySQL วิธีการนี้ช่วยให้คุณรวมผลลัพธ์หลายรายการเข้าด้วยกันในคำค้นหาเดียวได้อย่างมีประสิทธิภาพ

ขั้นตอนการดำเนินการ

  1. เตรียมโทเคนของคุณ: เริ่มต้นด้วยการระบุโทเคนของรายการของคุณ ตัวอย่างเช่น หากคุณมีวลี “see spot run” ให้สร้างตารางโทเคนที่เชื่อมโยงโทเคนกับ ID รายการของพวกเขา:

    'see', 1
    'spot', 1
    'run', 1
    'run', 2
    'spot', 3
    
  2. สร้างคำค้นหา: ใช้ PHP เพื่อวนซ้ำผ่านโทเคนและสร้างคำค้นหาที่มีโครงสร้างด้วย UNION ALL นี่คือวิธีที่มันอาจดู:

    SELECT * FROM `entries` WHERE token LIKE "%x%" 
    UNION ALL 
    SELECT * FROM `entries` WHERE token LIKE "%y%" 
    UNION ALL 
    SELECT * FROM `entries` WHERE token LIKE "%z%" 
    ORDER BY score DESC;
    
    • จุดสำคัญ:
      • หมวด ORDER BY จะทำงานบนผลลัพธ์ที่รวมกัน ทำให้มั่นใจได้ว่าการจัดอันดับมีประสิทธิภาพตามเกณฑ์ของคุณ
      • ใช้ LIKE เพื่อจับคู่โทเคนแบบไดนามิก
  3. ประเมินประสิทธิภาพ: แม้ว่าวิธีนี้อาจไม่เพิ่มความเร็วในการจับคู่แต่ละรายการอย่างมาก แต่มันสามารถลดภาระที่เกี่ยวข้องกับการส่งคำค้นหาหลายครั้งไปยังฐานข้อมูลในลำดับที่รวดเร็วลงอย่างมาก คุณส่งคำค้นหาหนึ่งรายการ รับผลลัพธ์ทั้งหมด และประมวลผลใน PHP

สรุป

การใช้ UNION ALL ในคำค้นหาของคุณใน MySQL เป็นเพียงหนึ่งในกลยุทธ์มากมายที่คุณสามารถนำมาใช้เพื่อปรับปรุงประสิทธิภาพการค้นหาในแอปพลิเคชันเว็บของคุณ วิธีการนี้ไม่เพียงแต่ลดจำนวนคำค้นหา แต่ยังทำให้ตรรกะที่จำเป็นในการมอบผลการค้นหาที่จัดอันดับและเกี่ยวข้องตามข้อมูลที่ผู้ใช้ป้อนนั้นง่ายขึ้น

โดยการดำเนินการตามโซลูชันนี้ คุณสามารถปรับปรุงประสบการณ์ผู้ใช้ด้วยผลลัพธ์ที่รวดเร็วและเกี่ยวข้องมากขึ้นในขณะเดียวกันก็ปรับปรุงประสิทธิภาพในฟังก์ชันการค้นหาของแอปเว็บของคุณ อย่าลังเลที่จะทดลองกับความหลากหลายของวิธีการนี้เพื่อให้เหมาะสมกับความต้องการเฉพาะของคุณ!