HeadlinesBriefing favicon HeadlinesBriefing.com

TIN: Ekstensi pencarian full-text Postgres GA

Hacker News •
×

Salah satu fitur Postgres yang paling sering diminta pelanggan kami adalah pencarian teks penuh. Hari ini, kami dengan senang hati mengumumkan TIN: ekstensi pencarian teks penuh untuk Postgres yang cepat, kaya fitur, dan andal. TIN berarti "Text INdex", dan itulah yang dilakukannya.

TIN segera tersedia sebagai rilis GA untuk semua database Postgres dan Neki. Cobalah: CREATE INDEX an_index_name ON table_name USING tin(text_column_name); SELECT * FROM table_name WHERE text_column_name ==> 'some words'. Kami membangun TIN karena kami percaya indeks teks yang baik harus mendukung: Ekspresi boolean, kueri frasa, dan kueri span.

Pencocokan fuzzy, wildcard, dan ekspresi reguler untuk istilah. Pelipatan huruf besar/kecil dan aksen. Kueri COUNT(*) dan kueri top-k dengan skor BM25.

Indeks teks yang baik di Postgres harus mendukung semua persyaratan tersebut sambil menangani join, klausa WHERE yang rumit di seluruh pencarian teks penuh dan tipe kolom lain, pembaruan berkelanjutan, replikasi, pencadangan, dan visibilitas transaksi yang benar. Meskipun sudah ada setidaknya tiga indeks pencarian teks yang ada untuk Postgres, tidak ada satupun yang memenuhi semua persyaratan tersebut. TIN memenuhinya.

TIN juga benar-benar, sangat cepat. Kami menjalankan benchmark untuk menilai performa untuk semua kasus penggunaan di atas dan lainnya. Kami mencoba beban kerja dengan kueri konjungsi, disjungsi, dan frasa serta campuran ketiganya.

Yang menghitung dokumen atau yang meminta top k berdasarkan skor BM25. Dengan dan tanpa klien yang menulis data baru ke indeks secara bersamaan dengan beban kerja kueri benchmark. Kami telah mengukur TIN terhadap berbagai korpus teks: seluruh Wikipedia, kumpulan komentar Reddit total 2,3 TB, dan beban kerja campuran yang kami sebut saja "pile" dengan 797 GB paper penelitian akses terbuka, dokumen hukum, buku domain publik, dan email Enron.

Hasil benchmark yang kami bagikan dalam artikel ini berasal dari ekspor pertanyaan dan jawaban dari Stack Exchange: korpus 85 GB dengan 150 juta dokumen.