18 pontos por xguru 2024-11-01 | 1 comentários | Compartilhar no WhatsApp
  • 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 tsvector de cada PDF também é armazenado. tsvector representa documentos em um formato otimizado para busca textual
    • Gerar o tsvector tem 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 coluna txt
  • Executando consultas de FTS
    • FTS normalmente usa o operador tsvector @@ tsquery
    • tsquery define um filtro de correspondência para o tsvector
    • 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');
  • É possível melhorar o desempenho criando um índice GIN na coluna tsvector

1 comentários

 
cosine20 2024-11-01

Nossa.....