18 Punkte von xguru 2024-11-01 | 1 Kommentare | Auf WhatsApp teilen
  • pgPDF ist eine Postgres-Erweiterung, mit der sich PDF-Dateien per SQL lesen lassen (ein Wrapper für poppler)
    SELECT pdf_read_file('/path/file.pdf') → text
  • Art der Datenspeicherung
    • Der Inhalt von PDF-Dateien wird in der Tabelle als Text (txt) und Binärdaten (bytes) gespeichert
    • Für jedes PDF wird außerdem ein tsvector gespeichert. tsvector stellt ein Dokument in einer für die Textsuche optimierten Form dar
    • Das Erzeugen von tsvector ist aufwendig, muss aber nur einmal erfolgen; daher empfiehlt es sich, ihn in einer generierten Spalte zu speichern
    • FTS-Abfragen werden nicht auf der txt-Spalte, sondern auf tsvector ausgeführt
  • FTS-Abfragen ausführen
    • FTS verwendet in der Regel den Operator tsvector @@ tsquery
    • tsquery definiert einen Matching-Filter für tsvector
    • Daneben gibt es verschiedene weitere Arten von tsquery: plainto_tsquery, phraseto_tsquery, websearch_to_tsquery
    • SELECT name FROM pdfs WHERE tsvec_en @@ to_tsquery('english', 'Postgres & Sharding');
  • Die Leistung lässt sich verbessern, indem auf der tsvector-Spalte ein GIN-Index erstellt wird

1 Kommentare

 
cosine20 2024-11-01

Oh.....