18 ポイント 投稿者 xguru 2024-11-01 | 1件のコメント | WhatsAppで共有
  • 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演算子を使う
    • tsquerytsvectorに対するマッチングフィルタを定義する
    • このほかにもさまざまな種類のtsqueryがある: plainto_tsquery, phraseto_tsquery, websearch_to_tsquery
    • SELECT name FROM pdfs WHERE tsvec_en @@ to_tsquery('english', 'Postgres & Sharding');
  • tsvectorカラムにGINインデックスを作成して性能を改善できる

1件のコメント

 
cosine20 2024-11-01

おお.....