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 memperhitungkan 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. PostgreSQL 17 atau yang lebih lama mendukung ekstensi ini.

Untuk menerapkan penelusuran teks lengkap (FTS) secara efektif, Anda harus memahami cara PostgreSQL memproses dan menelusuri teks. Unit penelusuran, dokumen, biasanya berupa kolom teks atau kombinasi kolom dari baris. Proses pembuatan indeks mengurai dokumen ini untuk mengaitkan kata (atau leksem, bentuk dasar suatu 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 henti 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 kecocokan untuk mengelola FTS:

  • tsvector: Merepresentasikan dokumen dalam format yang dapat ditelusuri—sebagai daftar terurut dari leksem yang berbeda.
  • tsquery: Merepresentasikan istilah penelusuran, termasuk operator boolean yang memungkinkan Anda menggabungkan leksem.
  • @@: Memeriksa apakah tsvector cocok dengan tsquery, sehingga memungkinkan penelusuran yang sadar 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.

AlloyDB juga mendukung ekstensi RUM untuk operasi penelusuran teks lengkap yang kompleks. RUM meningkatkan kualitas indeks GIN standar dengan menyimpan informasi posisi langsung di indeks, sehingga Anda dapat melakukan penelusuran frasa dan peringkat relevansi yang lebih cepat tanpa mengakses data tabel.

Untuk mengetahui informasi selengkapnya tentang cara membuat dan menggunakan indeks RUM di AlloyDB, lihat Membuat dan mengelola indeks RUM.

Penerapan penelusuran yang paling efektif sering kali menggabungkan penelusuran teks lengkap menggunakan indeks RUM dan penelusuran vektor. Gunakan penelusuran campuran untuk menggabungkan keunggulan pemahaman semantik dan pencocokan kata kunci persis, 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". Kemudian, database 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 cara menggunakan pendekatan campuran ini, lihat Menjalankan penelusuran kemiripan vektor campuran.

Langkah berikutnya