- 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');
- สามารถสร้างดัชนี GIN บนคอลัมน์
tsvector เพื่อปรับปรุงประสิทธิภาพได้
1 ความคิดเห็น
โอ.....