18 คะแนน โดย xguru 2024-11-01 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 ความคิดเห็น

 
cosine20 2024-11-01

โอ.....