Penelusuran teks lengkap (FTS) di AlloyDB untuk PostgreSQL memungkinkan Anda mengidentifikasi dokumen bahasa alami yang memenuhi kueri. Pendekatan ini lebih efektif daripada pencocokan string standar karena memperhitungkan nuansa linguistik, seperti mengabaikan stop word umum seperti "the" dan mencocokkan berbagai bentuk kata, seperti "run", "running", atau "ran".
Selain indeks GIN dan GiST PostgreSQL standar, AlloyDB menyediakan ekstensi rum untuk penelusuran teks lengkap berperforma tinggi di semua versi PostgreSQL yang didukung AlloyDB (PostgreSQL 18 dan yang lebih lama), serta peringkat relevansi Best Matching 25 (BM25) di PostgreSQL 17 dan yang lebih baru.
Konsep inti penelusuran teks lengkap
Untuk menerapkan penelusuran teks lengkap (FTS) secara efektif, Anda harus memahami cara PostgreSQL memproses dan menelusuri teks. Unit penelusuran, yaitu dokumen, biasanya berupa kolom teks atau kombinasi kolom dari sebuah baris. Proses pembuatan indeks mengurai dokumen ini untuk mengaitkan kata (atau leksem, bentuk dasar kata) dengan baris.
Proses ini melibatkan pipeline pra-pemrosesan yang mengubah teks mentah menjadi format yang dapat ditelusuri dengan:
- Memecah teks menjadi token.
- Menghapus stop word umum.
- Menormalisasi kata ke bentuk dasarnya; misalnya, "run" adalah leksem untuk "run", "runs", "running", dan "ran".
Penggunaan penelusuran teks lengkap juga mengharuskan Anda mempelajari jenis data khusus, operator, dan berbagai strategi pengindeksan, termasuk indeks PostgreSQL bawaan dan indeks RUM berperforma tinggi.
PostgreSQL menggunakan dua jenis data utama dan operator pencocokan untuk mengelola FTS:
tsvector: Mewakili dokumen dalam format yang dapat ditelusuri—sebagai daftar terurut dari leksem yang berbeda.tsquery: Mewakili istilah penelusuran, termasuk operator boolean yang memungkinkan Anda menggabungkan leksem.@@: Memeriksa apakahtsvectorcocok dengantsquery, sehingga memungkinkan penelusuran yang peka terhadap bahasa.
AlloyDB mendukung semua jenis indeks untuk penelusuran teks lengkap yang didukung oleh PostgreSQL bawaan. Pilihan indeks bergantung pada keseimbangan antara kecepatan penelusuran, waktu pembuatan indeks, kecepatan update, dan fungsi penelusuran spesifik yang diperlukan, seperti penelusuran frasa atau peringkat relevansi.
Untuk mengoptimalkan relevansi dan akurasi penelusuran, Anda juga dapat memilih salah satu opsi berikut:
- Indeks RUM: Meningkatkan indeks GIN standar dengan menyimpan informasi posisi langsung dalam indeks, sehingga Anda dapat melakukan penelusuran frasa dan peringkat relevansi yang lebih cepat tanpa mengakses data tabel. Ekstensi ini didukung di semua versi PostgreSQL yang didukung AlloyDB (PostgreSQL 18 dan yang lebih lama). Untuk mengetahui informasi selengkapnya, lihat Membuat dan mengelola indeks RUM.
- Indeks BM25: Menerapkan algoritma Best Matching 25 probabilistik untuk memberi peringkat dokumen berdasarkan frekuensi istilah dan saturasi panjang, sehingga memberikan presisi pencocokan kata kunci standar industri. Ekstensi ini didukung di PostgreSQL 17 atau yang lebih baru. Untuk mengetahui informasi selengkapnya, lihat Membuat dan mengelola indeks BM25.
Menggabungkan penelusuran teks lengkap dan semantik
Implementasi penelusuran yang paling efektif sering kali menggabungkan penelusuran teks lengkap menggunakan indeks RUM dan penelusuran vektor. Gunakan penelusuran campuran untuk menggabungkan kekuatan pemahaman semantik dan pencocokan kata kunci yang tepat, menggabungkan kumpulan hasil yang berbeda untuk peringkat yang komprehensif.
Misalnya, dalam aplikasi e-commerce, Anda dapat menggunakan penelusuran teks lengkap dengan RUM terlebih dahulu untuk menemukan produk yang berisi kata kunci tertentu seperti "sepatu lari", lalu menggunakan penelusuran vektor untuk menemukan hasil berdasarkan kesamaan semantik dengan kueri pengguna yang lebih mendetail, seperti "alas kaki yang nyaman untuk latihan jarak jauh". Database kemudian menggabungkan hasil yang diberi peringkat dari kedua komponen penelusuran menjadi satu daftar terpadu menggunakan algoritma Reciprocal Rank Fusion (RRF) untuk menghasilkan peringkat akhir.
Untuk mengetahui informasi selengkapnya tentang penggunaan pendekatan hybrid ini, lihat Menjalankan penelusuran kesamaan vektor hybrid.
Langkah berikutnya
- Pelajari cara Membuat dan mengkueri indeks RUM.
- Pelajari cara Membuat dan mengelola indeks BM25.
- Pelajari cara Menjalankan penelusuran kemiripan vektor campuran.