27 คะแนน โดย xguru 2023-10-11 | 3 ความคิดเห็น | แชร์ทาง WhatsApp
  • ส่วนขยาย Postgres ที่พัฒนาด้วย Rust เพื่อยกระดับการค้นหาแบบ Full Text
  • ใช้อัลกอริทึม BM25 (ใช้คำนวณคะแนนความเกี่ยวข้องของผลการค้นหา) ที่เสิร์ชเอนจินสมัยใหม่ใช้งาน
  • ปัจจุบันการค้นหาบนพื้นฐาน tsvector ที่ Postgres ใช้อยู่มีปัญหา 2 อย่าง
    • ประสิทธิภาพ: ค้นหาบนตารางขนาดใหญ่ได้ช้า
    • ความสามารถ: ไม่รองรับการค้นหาแบบ fuzzy, การปรับแต่งความเกี่ยวข้อง หรือคะแนนความเกี่ยวข้องแบบ BM25
  • เป้าหมายคืออุดช่องว่างระหว่างความสามารถด้านการค้นหาของ Postgres กับ ElasticSearch เพื่อไม่ให้ต้องนำบริการอย่าง ElasticSearch เข้ามาใน data stack
  • ความสามารถของ pg_bm25
    • เป็น Postgres Native 100% ไม่มี dependency ภายนอก
    • สร้างบน Tantivy ซึ่งเป็นทางเลือกของ Apache Lucene ที่พัฒนาด้วย Rust
    • เร็วกว่า tsquery/ts_rank ซึ่งเป็นฟังก์ชันค้นหา/จัดเรียงพื้นฐานของ Postgres ถึง 20 เท่า สำหรับข้อมูลมากกว่า 1 ล้านแถว
    • รองรับการค้นหาแบบ fuzzy, aggregation, highlighting และการปรับแต่งความเกี่ยวข้อง
    • ใช้คะแนนความเกี่ยวข้องด้วยอัลกอริทึม BM25 แบบเดียวกับที่ ElasticSearch ใช้
    • การค้นหาแบบเรียลไทม์: ข้อมูลใหม่ค้นหาได้ทันทีโดยไม่ต้อง reindex ด้วยตนเอง

3 ความคิดเห็น

 
secret3056 2023-10-13

ดูเหมือนว่ายังรองรับแค่ภาษาอังกฤษ และในเอกสารระบุว่า tokenizer แบบ chinese_compatible กำลังอยู่ระหว่างพัฒนา
นอกจากนี้ขนาด Docker image ก็ค่อนข้างใหญ่มาก เกือบ 8GB เลยทีเดียว; ถ้าเทียบกับอิมเมจ Postgres แบบดั้งเดิมที่ยังไม่ถึง 400MB ก็ชวนให้สงสัยว่าเขาใส่อะไรเพิ่มเข้าไปบนนั้นกันแน่...

 
cosine20 2023-10-13

ดีเลย...!

 
wnswl 2023-10-11

หวังว่าจะมีการรองรับบน DBMS แบบจัดการเองอย่าง RDS เร็ว ๆ นี้นะ!