Ringkasan penelusuran teks lengkap

Penelusuran teks lengkap (FTS) memungkinkan Anda mengidentifikasi dokumen bahasa alami yang memenuhi kueri. Pendekatan ini lebih efektif daripada pencocokan string standar karena mempertimbangkan nuansa linguistik, seperti mengabaikan kata-kata umum seperti "the" dan mencocokkan berbagai bentuk kata, seperti "run", "running", atau "ran".

AlloyDB untuk PostgreSQL mendukung semua fitur dan kemampuan penelusuran teks lengkap. Selain dukungan untuk indeks GIN dan GiST, AlloyDB juga menyediakan ekstensi RUM untuk penelusuran teks lengkap berperforma tinggi di PostgreSQL 17 atau yang lebih rendah, dan peringkat relevansi Best Matching 25 (BM25) di PostgreSQL 17 atau yang lebih tinggi.

Untuk menerapkan penelusuran teks lengkap (FTS) secara efektif, Anda harus memahami cara PostgreSQL memproses dan menelusuri teks. Unit penelusuran, dokumen, adalah biasanya berupa kolom teks atau kombinasi kolom dari sebuah baris. Proses build 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 kata-kata umum.
  • Menormalkan kata ke bentuk dasarnya; misalnya, "run" adalah leksem untuk "run", "runs", "running", dan "ran".

Menggunakan 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 leksem berbeda yang diurutkan.
  • tsquery: Mewakili istilah penelusuran, termasuk operator boolean yang memungkinkan Anda menggabungkan leksem.
  • @@: Memeriksa apakah tsvector cocok dengan tsquery, sehingga memungkinkan penelusuran yang linguistik.

AlloyDB mendukung semua jenis indeks untuk penelusuran teks lengkap yang didukung PostgreSQL bawaan. Pilihan indeks bergantung pada keseimbangan antara kecepatan penelusuran, waktu build indeks, kecepatan update, dan fungsi penelusuran tertentu 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 PostgreSQL 17 atau yang lebih rendah. 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 tinggi. Untuk mengetahui informasi selengkapnya, lihat Membuat dan mengelola indeks BM25.

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" dan menggunakan penelusuran vektor untuk menemukan hasil berdasarkan kemiripan semantik dengan kueri pengguna yang lebih mendetail, seperti "sepatu yang nyaman untuk latihan jarak jauh". Database kemudian menggabungkan hasil peringkat dari kedua komponen penelusuran ke dalam satu daftar terpadu menggunakan algoritma Reciprocal Rank Fusion (RRF) untuk menghasilkan peringkat akhir.

Untuk mengetahui informasi selengkapnya tentang penggunaan pendekatan campuran ini, lihat Menjalankan penelusuran kemiripan vektor campuran.

Langkah berikutnya