HeadlinesBriefing favicon HeadlinesBriefing.com

TIN: Extensão busca full-text Postgres GA

Hacker News •
×

Um dos recursos do Postgres que nossos clientes mais nos pedem é a busca de texto completo. Hoje, estamos entusiasmados em anunciar o TIN: uma extensão de busca de texto completo para Postgres, rápida, com todos os recursos e confiável. TIN significa "Text INdex", e é isso que ele faz.

O TIN está disponível imediatamente como versão GA para todos os bancos de dados Postgres e Neki. Experimente: CREATE INDEX an_index_name ON table_name USING tin(text_column_name); SELECT * FROM table_name WHERE text_column_name ==> 'some words'. Criamos o TIN porque acreditamos que um bom índice de texto deve suportar: Expressões booleanas, consultas de frases e consultas de span.

Correspondência difusa, curinga e de expressão regular para termos. Dobramento de maiúsculas/minúsculas e acentos. Consultas COUNT(*) e consultas top-k pontuadas com BM25.

Um bom índice de texto no Postgres deve suportar todos esses requisitos, além de lidar com joins, cláusulas WHERE complexas entre busca de texto completo e outros tipos de colunas, atualizações contínuas, replicação, backups e visibilidade transacional correta. Embora já existam pelo menos três índices de busca de texto para Postgres, nenhum deles atende a todos esses requisitos. O TIN atende.

O TIN também é realmente, incrivelmente rápido. Executamos benchmarks para avaliar o desempenho para todos os casos de uso acima e mais. Testamos cargas de trabalho com consultas de conjunção, disjunção e frases, e uma mistura das três.

Que contam documentos ou que pedem o top k por pontuação BM25. Com e sem clientes gravando novos dados no índice simultaneamente com a carga de trabalho de consultas do benchmark. Medimos o TIN em uma variedade de corpora de texto: toda a Wikipédia, uma coleção de comentários do Reddit totalizando 2,3 TB, e uma carga de trabalho mista que chamamos simplesmente de "pile" com 797 GB de artigos de pesquisa de acesso aberto, documentos jurídicos, livros de domínio público e e-mails da Enron.

Os resultados do benchmark que compartilhamos neste artigo são de uma exportação de perguntas e respostas do Stack Exchange: um corpus de 85 GB com 150 milhões de documentos.