HeadlinesBriefing favicon HeadlinesBriefing.com

TIN : Extension recherche full-text Postgres GA

Hacker News •
×

L'une des fonctionnalités de Postgres que nos clients nous demandent le plus est la recherche full-text. Aujourd'hui, nous sommes ravis d'annoncer TIN : une extension de recherche full-text pour Postgres, rapide, complète et fiable. TIN signifie "Text INdex", et c'est exactement ce qu'il fait.

TIN est disponible immédiatement en version GA pour toutes les bases de données Postgres et Neki. Essayez-le : CREATE INDEX an_index_name ON table_name USING tin(text_column_name); SELECT * FROM table_name WHERE text_column_name ==> 'some words'. Nous avons créé TIN car nous pensons qu'un bon index de texte doit prendre en charge : Les expressions booléennes, les requêtes de phrases et les requêtes de portée.

La correspondance floue, avec caractères génériques et par expressions régulières pour les termes. Le pliage de la casse et des accents. Les requêtes COUNT(*) et les requêtes top-k notées BM25.

Un bon index de texte dans Postgres doit prendre en charge toutes ces exigences tout en gérant aussi les jointures, les clauses WHERE complexes entre la recherche full-text et d'autres types de colonnes, les mises à jour continues, la réplication, les sauvegardes et la visibilité transactionnelle correcte. Bien qu'il existe déjà au moins trois index de recherche textuelle pour Postgres, aucun ne répond à toutes ces exigences. TIN le fait.

TIN est aussi vraiment, incroyablement rapide. Nous avons exécuté des benchmarks pour évaluer les performances pour tous les cas d'utilisation ci-dessus et plus. Nous avons testé des charges de travail avec des requêtes de conjonction, de disjonction et de phrases, et un mélange des trois.

Celles qui comptent les documents ou qui demandent le top k par score BM25. Avec et sans clients écrivant de nouvelles données dans l'index simultanément avec la charge de travail de requêtes du benchmark. Nous avons mesuré TIN sur une variété de corpus textuels : tout Wikipédia, une collection de commentaires Reddit totalisant 2,3 To, et une charge de travail mixte que nous appelons simplement "pile" avec 797 Go de papiers de recherche en accès ouvert, documents juridiques, livres du domaine public et emails Enron.

Les résultats de benchmark que nous partageons dans cet article proviennent d'un export de questions et réponses de Stack Exchange : un corpus de 85 Go avec 150 millions de documents.