ทำ Full-text Search บน PDF ใน Postgres
(tselai.com)- pgPDF คือส่วนขยายของ Postgres ที่ทำให้อ่านไฟล์ PDF ด้วย SQL ได้ (wrapper ของ poppler)
SELECT pdf_read_file('/path/file.pdf') → text - วิธีจัดเก็บข้อมูล
- เนื้อหาไฟล์ PDF จะถูกเก็บในตารางทั้งในรูปแบบข้อความ (txt) และไบนารี (bytes)
- เก็บ
tsvectorของ PDF แต่ละไฟล์ไว้ด้วย โดยtsvectorจะแทนเอกสารในรูปแบบที่เหมาะกับการค้นหาข้อความ - การสร้าง
tsvectorมีต้นทุนสูง แต่ทำเพียงครั้งเดียวก็พอ จึงควรเก็บไว้ในคอลัมน์ generated - คำสั่ง FTS จะทำงานกับ
tsvectorไม่ใช่คอลัมน์txt
- การรันคำสั่ง FTS
- โดยทั่วไป FTS ใช้ตัวดำเนินการ
tsvector @@ tsquery tsqueryใช้กำหนดตัวกรองการแมตช์สำหรับtsvector- นอกจากนี้ยังมี
tsqueryหลายแบบ เช่นplainto_tsquery,phraseto_tsquery,websearch_to_tsquery SELECT name FROM pdfs WHERE tsvec_en @@ to_tsquery('english', 'Postgres & Sharding');
- โดยทั่วไป FTS ใช้ตัวดำเนินการ
- สามารถสร้างดัชนี GIN บนคอลัมน์
tsvectorเพื่อปรับปรุงประสิทธิภาพได้
1 ความคิดเห็น
โอ.....