18 điểm bởi xguru 2024-11-01 | 1 bình luận | Chia sẻ qua WhatsApp
  • pgPDF là một tiện ích mở rộng Postgres cho phép đọc tệp PDF bằng SQL (wrapper của poppler)
    SELECT pdf_read_file('/path/file.pdf') → text
  • Cách lưu trữ dữ liệu
    • Nội dung tệp PDF được lưu trong bảng dưới dạng văn bản (txt) và nhị phân (bytes)
    • Cũng lưu tsvector của từng PDF. tsvector biểu diễn tài liệu ở dạng được tối ưu cho tìm kiếm văn bản
    • Việc tạo tsvector có chi phí cao, nhưng vì chỉ cần thực hiện một lần nên tốt nhất là lưu vào cột sinh sẵn (generated)
    • Truy vấn FTS được thực hiện trên tsvector, không phải trên cột txt
  • Thực thi truy vấn FTS
    • FTS thường sử dụng toán tử tsvector @@ tsquery
    • tsquery định nghĩa bộ lọc khớp cho tsvector
    • Ngoài ra còn có nhiều loại tsquery khác: plainto_tsquery, phraseto_tsquery, websearch_to_tsquery
    • SELECT name FROM pdfs WHERE tsvec_en @@ to_tsquery('english', 'Postgres & Sharding');
  • Có thể cải thiện hiệu năng bằng cách tạo chỉ mục GIN trên cột tsvector

1 bình luận

 
cosine20 2024-11-01

Ồ.....