HeadlinesBriefing favicon HeadlinesBriefing.com

TIN: Extensión de búsqueda full-text para Postgres GA

Hacker News •
×

Una de las características de Postgres que más nos piden nuestros clientes es la búsqueda de texto completo. Hoy, estamos emocionados de anunciar TIN: una extensión de búsqueda de texto completo para Postgres, rápida, con todas las funciones y confiable. TIN significa "Text INdex" (Índice de Texto), y eso es lo que hace.

TIN está disponible inmediatamente como versión GA para todas las bases de datos Postgres y Neki. Pruébalo: CREATE INDEX an_index_name ON table_name USING tin(text_column_name); SELECT * FROM table_name WHERE text_column_name ==> 'some words'. Creamos TIN porque creemos que un buen índice de texto debe soportar: Expresiones booleanas, consultas de frases y consultas de span.

Coincidencia difusa, con comodines y de expresiones regulares para términos. Plegado de mayúsculas/minúsculas y acentos. Consultas COUNT(*) y consultas top-k puntuadas con BM25.

Un buen índice de texto en Postgres debe soportar todos esos requisitos mientras también maneja joins, cláusulas WHERE complicadas entre búsqueda de texto completo y otros tipos de columnas, actualizaciones continuas, replicación, backups y visibilidad transaccional correcta. Aunque ya existen al menos tres índices de búsqueda de texto para Postgres, ninguno cumple con todos esos requisitos. TIN sí lo hace.

TIN también es realmente, increíblemente rápido. Ejecutamos benchmarks para evaluar el rendimiento en todos los casos de uso anteriores y más. Probamos cargas de trabajo con consultas de conjunción, disyunción y frases, y una mezcla de las tres.

Que cuentan documentos o que piden el top k por puntuación BM25. Con y sin clientes escribiendo nuevos datos en el índice concurrentemente con la carga de trabajo de consultas del benchmark. Hemos medido TIN contra una variedad de corpus de texto: toda Wikipedia, una colección de comentarios de Reddit que totalizan 2.3 TB, y una carga de trabajo mixta que llamamos simplemente "pile" con 797 GB de papers de investigación de acceso abierto, documentos legales, libros de dominio público y correos de Enron.

Los resultados del benchmark que compartimos en este artículo provienen de una exportación de preguntas y respuestas de Stack Exchange: un corpus de 85 GB con 150 millones de documentos.