จัดการ Faceted Search เมื่อมีตัวกรองใช้งานอยู่ด้วย Manticore Search
เจาะลึกฟีเจอร์ facet_filter_mode ใน Manticore Search 25.12.0 ที่ช่วยแก้ปัญหาการแสดงผลตัวกรองสินค้าในร้านค้าออนไลน์ได้อย่างมีประสิทธิภาพ

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- Manticore Search 25.12.0 เปิดตัว facet_filter_mode เพื่อจัดการการทำงานของ Facet API
- รองรับโหมดการสืบทอดตัวกรอง 3 รูปแบบ ได้แก่ strict, auto และ max
- ช่วยให้แผงตัวกรองแสดงสถานะ selected, available หรือ unavailable ได้ทันที
- ลดความซับซ้อนในการเขียนคำสั่งแยกสำหรับแต่ละแอตทริบิวต์ของสินค้า
การทำ Faceted Search ในร้านค้าออนไลน์ดูเหมือนจะเป็นเรื่องง่ายจนกว่าจะมีการเลือกตัวกรองชิ้นแรก ในแคตตาล็อกสินค้า ตัวกรองเหล่านี้ทำหน้าที่เป็นระบบนำทาง สีที่ถูกเลือกไม่ควรหายไปจากรายการ สีอื่นๆ ควรจะยังคงอยู่เพื่อให้ผู้ใช้สามารถเปลี่ยนใจหรือขยายขอบเขตการค้นหาได้ ตัวเลือกที่ไม่มีสินค้าตรงกันจะมีประโยชน์มากกว่าเมื่อแสดงเป็นสถานะใช้งานไม่ได้ ภายในฟิลด์เดียวกันมักใช้เงื่อนไข OR เช่น สีแดงหรือสีฟ้า แต่ระหว่างฟิลด์ที่ต่างกันจะใช้เงื่อนไข AND เช่น แบรนด์ สี และขนาดพร้อมๆ กัน
ความยุ่งยากจะเริ่มต้นขึ้นหลังจากมีการเลือกตัวกรองรอบแรก สมมติว่าผู้ใช้เลือกแบรนด์ สี และขนาดสินค้า ผลลัพธ์หลักต้องแคบลงและแสดงเฉพาะสินค้าที่ตรงกับเงื่อนไขทั้งสามข้อ แต่แผงตัวกรองกลับต้องใช้กฎที่แตกต่างออกไป มันต้องรักษาค่าสีที่ถูกเลือกไว้ พร้อมกับแสดงสีอื่นๆ ที่ผู้ใช้สามารถเปลี่ยนไปเลือกได้ภายใต้แบรนด์และขนาดเดิม
Manticore Search เวอร์ชัน 25.12.0 ได้แนะนำ facet_filter_mode ซึ่งย้ายพฤติกรรมการทำงานนี้เข้ามาไว้ในส่วนของ Facet API คำสั่งค้นหาสามารถอธิบายได้ทันทีว่าแผงตัวกรองของร้านค้าควรทำตัวอย่างไร โดยที่แอปพลิเคชันไม่ต้องเขียนคำสั่งแยกเกือบจะเหมือนกันสำหรับทุกๆ ฟิลด์
ฟีเจอร์นี้มีความสำคัญอย่างยิ่งสำหรับนักพัฒนาเว็บอีคอมเมิร์ซ เพราะปกติแล้วการคำนวณตัวกรองที่เหลืออยู่ภายใต้เงื่อนไขที่ผู้ใช้เลือกไว้แล้ว (Active Filters) ต้องใช้การเขียน SQL หรือ Query ที่ซับซ้อนและแยกย่อยตามแต่ละหมวดหมู่ การที่ Search Engine เข้ามาจัดการระดับ API โดยตรงช่วยลดภาระของฝั่งแอปพลิเคชันได้อย่างมหาศาล และทำให้การตอบสนองของหน้าเว็บรวดเร็วขึ้น
ระบบ facet_filter_mode จัดการกับปัญหาที่พบบ่อยที่สุด นั่นคือการคำนวณตัวกรองใหม่หลังจากผู้ใช้เลือกตัวกรองไปแล้วหลายรายการ โดยมีโหมดการสืบทอดตัวกรอง 3 รูปแบบหลัก ดังนี้:
- strict: ทุกฟิลด์จะได้รับตัวกรองทั้งหมดจากคำสั่งค้นหาหลักโดยไม่มีข้อยกเว้น
- auto: รักษาทุกตัวกรองเอาไว้ ยกเว้นตัวกรองของฟิลด์ที่กำลังถูกคำนวณอยู่ในขณะนั้น
- max: คำนวณขอบเขตจากชุดผลลัพธ์พื้นฐานและแสดงสถานะแยกต่างหากสำหรับหน้าอินเทอร์เฟซ

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
หากพิจารณาตัวอย่างจากตารางสินค้าจำลองที่มี brand_id, color_id และ size_id เมื่อผู้ใช้เลือก brand_id = 7 AND color_id = 1 AND size_id = 10 ผลลัพธ์จะเหลือสินค้าเพียงรายการเดียวคือ p1 ในโหมด strict ค่าที่ตอบกลับมาจะแคบมากจนผู้ใช้มองไม่เห็นตัวเลือกอื่น แต่ในโหมด auto ระบบจะแสดงสถานะเป็น selected สำหรับตัวเลือกที่เลือกไว้ และ available สำหรับตัวเลือกอื่นที่ยังสามารถกดเปลี่ยนได้
นอกจากนี้ โหมด max จะก้าวไปอีกขั้นด้วยการคำนวณขอบเขตจากชุดผลลัพธ์พื้นฐานพร้อมป้ายสถานะที่ชัดเจน ตัวเลือกเดียวกันนี้ยังสามารถใช้งานผ่าน JSON API ได้ผ่านพารามิเตอร์ facet_filter_mode, mode, filters, exclude_filters และ zeroes: true อีกด้วย
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น