Fazendo busca de texto completo em PDFs no Postgres
(tselai.com)- pgPDF é uma extensão do Postgres que permite ler arquivos PDF com SQL (um wrapper do poppler)
SELECT pdf_read_file('/path/file.pdf') → text - Forma de armazenar os dados
- O conteúdo do arquivo PDF é armazenado na tabela em formato de texto (txt) e binário (bytes)
- O
tsvectorde cada PDF também é armazenado.tsvectorrepresenta documentos em um formato otimizado para busca textual - Gerar o
tsvectortem custo alto, mas como isso só precisa ser feito uma vez, é melhor armazená-lo em uma coluna gerada (generated) - As consultas de FTS são executadas sobre o
tsvector, não sobre a colunatxt
- Executando consultas de FTS
- FTS normalmente usa o operador
tsvector @@ tsquery tsquerydefine um filtro de correspondência para otsvector- Também existem vários outros tipos de
tsquery:plainto_tsquery,phraseto_tsquery,websearch_to_tsquery SELECT name FROM pdfs WHERE tsvec_en @@ to_tsquery('english', 'Postgres & Sharding');
- FTS normalmente usa o operador
- É possível melhorar o desempenho criando um índice GIN na coluna
tsvector
1 comentários
Nossa.....