HeadlinesBriefing favicon HeadlinesBriefing.com

TIN: Расширение полнотекстового поиска для Postgres GA

Hacker News •
×

Одна из самых востребованных нашими клиентами функций Postgres — это полнотекстовый поиск. Сегодня мы рады анонсировать TIN: быстрое, полнофункциональное, надежное расширение полнотекстового поиска для Postgres. TIN расшифровывается как "Text INdex", и именно это он и делает. TIN доступен немедленно как GA-релиз для всех баз данных Postgres и Neki. Попробуйте: CREATE INDEX an_index_name ON table_name USING tin(text_column_name); SELECT * FROM table_name WHERE text_column_name ==> 'some words'. Мы создали TIN, потому что считаем, что хороший текстовый индекс должен поддерживать: Булевы выражения, фразовые запросы и запросы диапазонов. Нечеткое, с подстановочными знаками и регулярное выражение сопоставление для терминов. Свертывание регистра и акцентов. Запросы COUNT(*) и запросы top-k с оценкой BM25. Хороший текстовый индекс в Postgres должен поддерживать все эти требования, а также обрабатывать соединения, сложные предложения WHERE для полнотекстового поиска и других типов столбцов, непрерывные обновления, репликацию, резервное копирование и правильную видимость транзакций. Хотя для Postgres уже существует как минимум три текстовых поисковых индекса, ни один из них не соответствует всем этим требованиям.

TIN соответствует. TIN также действительно невероятно быстр. Мы запустили бенчмарки для оценки производительности для всех вышеуказанных вариантов использования и не только. Мы пробовали рабочие нагрузки с конъюнктивными, дизъюнктивными и фразовыми запросами, а также их смесь. Те, что подсчитывают документы, или те, что запрашивают top k по оценке BM25. С клиентами, пишущими новые данные в индекс параллельно с нагрузкой запросов бенчмарка, и без. Мы измерили TIN на различных текстовых корпусах: всей Википедии, коллекции комментариев Reddit общим объемом 2,3 TB, и смешанной рабочей нагрузке, которую мы называем просто "pile" с 797 GB открытых исследовательских статей, юридических документов, книг в общественном достоянии и писем Enron. Результаты бенчмарков, которые мы делимся в этой статье, получены из экспорта вопросов и ответов Stack Exchange: корпус 85 GB с 150 миллионами документов.