Pencarian Trigram (pg_trgm) untuk Pencocokan Samar
Temukan string serupa dengan ekstensi pg_trgm, indeks trigram GiST/GIN, dan similarity()
Pencarian Trigram (pg_trgm) untuk Pencocokan Samar adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.
Mengapa Trigram?
LIKE %word% tidak dapat menggunakan indeks B-tree. Trigram ("subrangkaian 3 karakter") yang dipadukan dengan GIN/GiST memberi Anda pencarian kemiripan dan bagian teks yang cepat.
Aktifkan Ekstensi
pg_trgm disertakan dalam modul kontribusi PostgreSQL:
CREATE EXTENSION IF NOT EXISTS pg_trgm;Trigram Sebuah Kata
Tampilkan trigram dari sebuah teks:
SELECT show_trgm('database');
-- {dat, aba, atab, tab, abas, base, ase, ...}Fungsi Kemiripan
Bilangan pecahan dalam [0..1]:
SELECT similarity('database', 'datbase'); -- ~0.75
SELECT similarity('hello', 'world'); -- ~0.0Operator %
Mengembalikan nilai benar jika kemiripan berada di atas ambang (bawaan 0.3):
SELECT 'database' % 'datbase'; -- t
SET pg_trgm.similarity_threshold = 0.4;Indeks untuk Pencarian Bagian Teks
Indeks trigram GIN membuat LIKE '%word%' menjadi cepat:
CREATE INDEX users_name_trgm ON users USING GIN (full_name gin_trgm_ops);
-- Now this is index-supported:
SELECT * FROM users WHERE full_name ILIKE '%ali%';GiST vs GIN
- GIN—pembacaan lebih cepat, penulisan lebih lambat, indeks lebih besar
- GiST—penulisan lebih cepat, pembacaan lebih lambat, indeks lebih kecil
Sebagian besar tim memilih GIN untuk pencarian berdasarkan kemiripan.
Kueri Pencocokan Berdasarkan Kemiripan
Temukan teks yang mirip meskipun terdapat salah ketik:
SELECT full_name, similarity(full_name, 'datbase') AS sim
FROM users
WHERE full_name % 'datbase'
ORDER BY sim DESC
LIMIT 10;Jarak untuk Pemeringkatan
Operator <-> mengembalikan jarak (1 - kemiripan), sehingga Anda dapat menggunakan ORDER BY jarak ASC:
SELECT full_name
FROM users
WHERE full_name % 'alice'
ORDER BY full_name <-> 'alice'
LIMIT 10;Pelengkapan Otomatis dengan Trigram
Gabungkan pg_trgm dengan awalan LIKE untuk pelengkapan otomatis yang responsif:
SELECT name
FROM products
WHERE name % $1
OR name ILIKE $1 || '%'
ORDER BY similarity(name, $1) DESC
LIMIT 8;Keterbatasan Trigram
Trigram bekerja berdasarkan alfabet masukan. Bahasa CJK memerlukan tokenisasi yang berbeda. Untuk pencarian bahasa alami lengkap, gunakan tsvector + GIN.
Menggabungkan dengan Indeks Lain
Kueri dengan beberapa penyaring dapat menggunakan indeks trigram DAN B-tree melalui Bitmap AND:
EXPLAIN ANALYZE
SELECT * FROM users
WHERE full_name ILIKE '%ali%' AND country = 'US';Ringkasan
pg_trgm mengatasi masalah "karakter pengganti di awal".
- Indeks trigram GIN → LIKE %x% yang cepat
- Operator % dan similarity() untuk pencocokan berdasarkan kemiripan
- Jarak <-> untuk pemeringkatan
- Sangat baik untuk pelengkapan otomatis dan pencarian yang tahan terhadap salah ketik
Pemeriksaan Singkat
Mengapa indeks B-tree biasa tidak dapat membantu WHERE name LIKE '%alice%'?
Belajar SQL dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 46
- Pelajaran
- 183
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pencarian Trigram (pg_trgm) untuk Pencocokan Samar” gratis?
Ya — teks lengkap “Pencarian Trigram (pg_trgm) untuk Pencocokan Samar” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pencarian Trigram (pg_trgm) untuk Pencocokan Samar”?
Temukan string serupa dengan ekstensi pg_trgm, indeks trigram GiST/GIN, dan similarity() Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai SQL Academy?
Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Pencarian Trigram (pg_trgm) untuk Pencocokan Samar” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?
Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Pencarian Trigram (pg_trgm) untuk Pencocokan Samar
- Pencarian Teks Lengkap dengan tsvector dan GIN
- Pengindeksan Geospasial dengan PostGIS
- Pencarian Vektor dengan pgvector