pg_bm25 - ส่วนขยาย Full-Text Search สำหรับ Postgres ที่ให้คุณภาพระดับ Elastic
(docs.paradedb.com)- ส่วนขยาย 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 ความคิดเห็น
ดูเหมือนว่ายังรองรับแค่ภาษาอังกฤษ และในเอกสารระบุว่า tokenizer แบบ
chinese_compatibleกำลังอยู่ระหว่างพัฒนานอกจากนี้ขนาด Docker image ก็ค่อนข้างใหญ่มาก เกือบ 8GB เลยทีเดียว; ถ้าเทียบกับอิมเมจ Postgres แบบดั้งเดิมที่ยังไม่ถึง 400MB ก็ชวนให้สงสัยว่าเขาใส่อะไรเพิ่มเข้าไปบนนั้นกันแน่...
ดีเลย...!
หวังว่าจะมีการรองรับบน DBMS แบบจัดการเองอย่าง RDS เร็ว ๆ นี้นะ!