- pgPDFは、PDFファイルをSQLで読み取れるPostgres拡張機能(popplerのラッパー)
SELECT pdf_read_file('/path/file.pdf') → text
- データの保存方法
- PDFファイルの内容は、テキスト(txt)とバイナリ(bytes)の形でテーブルに保存する
- 各PDFの
tsvectorも保存する。tsvectorは文書をテキスト検索に最適化された形で表現する
tsvectorの生成はコストが高いが、1回だけ実行すればよいため、generatedカラムに保存するのが望ましい
- FTSクエリは
txtカラムではなくtsvectorに対して実行される
- 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');
tsvectorカラムにGINインデックスを作成して性能を改善できる
1件のコメント
おお.....