SQL Academy · Pelajaran

Pencarian Trigram (pg_trgm) untuk Pencocokan Samar

Temukan string serupa dengan ekstensi pg_trgm, indeks trigram GiST/GIN, dan similarity()

Pelajaran 1 dari 414 langkah

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.0

Operator %

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%'?

Gratis untuk memulai

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

  1. Pencarian Trigram (pg_trgm) untuk Pencocokan Samar
  2. Pencarian Teks Lengkap dengan tsvector dan GIN
  3. Pengindeksan Geospasial dengan PostGIS
  4. Pencarian Vektor dengan pgvector
← Kembali ke SQL Academy