Mereka melayani tujuan yang sangat berbeda.
- Pencarian Teks Lengkap digunakan untuk mengembalikan dokumen yang cocok dengan kueri penelusuran kata-kata bertangkai.
- Trigram memberi Anda metode untuk membandingkan dua string dan menentukan seberapa mirip mereka.
Perhatikan contoh berikut:
SELECT 'cat' % 'cats'; --true
Di atas mengembalikan true karena 'cat'
sangat mirip dengan 'cats'
(seperti yang ditentukan oleh batas pg_trgm).
SELECT 'there is a cat with a dog' % 'cats'; --false
Di atas mengembalikan false
karena %
sedang mencari kesamaan antara dua string keseluruhan, tidak mencari kata cats
dalam string.
SELECT to_tsvector('there is a cat with a dog') @@ to_tsquery('cats'); --true
Ini mengembalikan true
karena tsvector mengubah string menjadi daftar kata bertangkai dan mengabaikan sekelompok kata umum (kata henti - seperti 'is' &'a')... kemudian mencari versi bertangkai cats
.
Sepertinya Anda ingin menggunakan trigram untuk koreksi otomatis ts_query
. Anda tapi itu tidak benar-benar mungkin (toh tidak dengan cara yang efisien). Mereka tidak benar-benar tahu sebuah kata salah eja, betapa miripnya dengan kata lain. Mereka bisa digunakan untuk mencari tabel kata untuk mencoba dan menemukan kata yang serupa, memungkinkan Anda untuk menerapkan fitur jenis "apa maksud Anda...", tetapi kata ini memerlukan pemeliharaan tabel terpisah yang berisi semua kata yang digunakan dalam pencarian search
lapangan.
Jika Anda memiliki beberapa kata/frasa yang sering salah eja yang ingin dicocokkan dengan indeks teks, Anda mungkin ingin melihat Kamus Sinonim