Volltextsuche in PDFs mit Postgres
(tselai.com)- 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
tsvectorgespeichert.tsvectorstellt ein Dokument in einer für die Textsuche optimierten Form dar - Das Erzeugen von
tsvectorist 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 auftsvectorausgeführt
- Der Inhalt von PDF-Dateien wird in der Tabelle als Text (
- FTS-Abfragen ausführen
- FTS verwendet in der Regel den Operator
tsvector @@ tsquery tsquerydefiniert einen Matching-Filter fürtsvector- 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');
- FTS verwendet in der Regel den Operator
- Die Leistung lässt sich verbessern, indem auf der
tsvector-Spalte ein GIN-Index erstellt wird
1 Kommentare
Oh.....