ข้ามไปเนื้อหาหลัก

จัดการ Faceted Search เมื่อมีตัวกรองใช้งานอยู่ด้วย Manticore Search

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

เรียบเรียงโดย AI
Inewgen
30 Jul 2026ที่มา: Dev.to3 นาทีอ่าน (0 ครั้ง)อัปเดตล่าสุด 29 Aug 2026
แชร์
จัดการ Faceted Search เมื่อมีตัวกรองใช้งานอยู่ด้วย Manticore Search

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ขนาดตัวอักษร
  • 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: คำนวณขอบเขตจากชุดผลลัพธ์พื้นฐานและแสดงสถานะแยกต่างหากสำหรับหน้าอินเทอร์เฟซ
ecommerce filter panel user interface

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

หากพิจารณาตัวอย่างจากตารางสินค้าจำลองที่มี 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

ความคิดเห็น

แสดงความคิดเห็น
0/2000

พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้