Kemampuan pencarian frase terintegrasi ke dalam pencarian teks data ketik tsquery
. Operator penelusuran teks @@
yang Anda tampilkan mengambil tsvector
ke kiri dan tsquery
ke kanan. Dan tsvector
dapat dibuat dari jenis karakter apa pun serta dari dokumen JSON.
Terkait:
Anda dapat mengonversi json
. Anda atau jsonb
dokumen ke vektor pencarian teks dengan salah satu khusus fungsi
:
to_tsvector()
json(b)_to_tsvector()
Perhatikan bahwa ini hanya menyertakan nilai dari dokumen JSON, bukan kunci . Biasanya, itulah yang Anda inginkan. Contoh dasar:
SELECT to_tsvector(jsonb '{"foo":"jump quickly"}')
@@ to_tsquery('jump <-> quick:*');
Mendemonstrasikan pencocokan awalan di atas pencarian frase saat berada di sana. Lihat:
Alternatifnya , Anda cukup membuat tsvector
dari text
representasi dokumen JSON Anda untuk juga menyertakan nama kunci:
SELECT to_tsvector((jsonb '{"foo-fighter":"jump quickly"}')::text)
@@ to_tsquery('foo <-> fight:*');
Menghasilkan tsvector
yang lebih besar , tentu saja.
Keduanya dapat diindeks (yang merupakan poin utama dari pencarian teks). Hanya indeks yang terikat ke tabel relasional. (Dan Anda dapat mengindeks ekspresi
!)
Ekspresi itu sendiri dapat diterapkan ke nilai apa pun, tidak terikat pada tabel seperti yang Anda maksudkan.