- 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
Oh.....