0Pricing
SQL Academy · Ders

Benzerlik Eşleştirme için Üçlü Arama (pg_trgm)

pg_trgm eklentisi, GiST/GIN üçlü INDEX'leri ve similarity() ile benzer dizeleri bulun.

Benzerlik Eşleştirme için Üçlü Arama (pg_trgm), CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.

Üçlü Karakter Dizileri Neden Kullanılır?

LIKE %word%, B-tree dizinini kullanamaz. Üçlü karakter dizileri ("3 karakterlik alt dizeler"), GIN/GiST ile birleştirildiğinde hızlı yaklaşık ve alt dize araması sağlar.

Eklentiyi Etkinleştirme

pg_trgm, PostgreSQL katkı modülleriyle birlikte gelir:

CREATE EXTENSION IF NOT EXISTS pg_trgm;

Bir Sözcüğün Üçlü Karakter Dizileri

Bir dizenin üçlü karakter dizilerini gösterin:

SELECT show_trgm('database');
-- {dat, aba, atab, tab, abas, base, ase, ...}

Benzerlik İşlevi

[0..1] aralığında kayan nokta değeri:

SELECT similarity('database', 'datbase');     -- ~0.75
SELECT similarity('hello', 'world');             -- ~0.0

% İşleci

Benzerlik eşik değerinin üzerindeyse doğru değerini döndürür (varsayılan 0.3):

SELECT 'database' % 'datbase';      -- t
SET pg_trgm.similarity_threshold = 0.4;

Alt Dize Araması İçin Dizin

GIN üçlü karakter dizisi dizini, LIKE '%sözcük%' ifadesini hızlı hâle getirir:

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 ile GIN Karşılaştırması

  • GIN — daha hızlı okumalar, daha yavaş yazmalar, daha büyük dizin
  • GiST — daha hızlı yazmalar, daha yavaş okumalar, daha küçük dizin

Çoğu ekip yaklaşık arama için GIN'i seçer.

Yaklaşık Eşleşme Sorguları

Yazım hataları olsa bile benzer dizeleri bulun:

SELECT full_name, similarity(full_name, 'datbase') AS sim
FROM users
WHERE full_name % 'datbase'
ORDER BY sim DESC
LIMIT 10;

Sıralama İçin Uzaklık

<-> işleci uzaklığı (1 - benzerlik) döndürür; böylece uzaklığa göre ORDER BY distance ASC kullanabilirsiniz:

SELECT full_name
FROM users
WHERE full_name % 'alice'
ORDER BY full_name <-> 'alice'
LIMIT 10;

Üçlü Karakter Dizileriyle Otomatik Tamamlama

Akıcı bir otomatik tamamlama deneyimi için pg_trgm'yi LIKE önekiyle birleştirin:

SELECT name
FROM products
WHERE name % $1
   OR name ILIKE $1 || '%'
ORDER BY similarity(name, $1) DESC
LIMIT 8;

Üçlü Karakter Dizilerinin Sınırları

Üçlü karakter dizileri, girdinin alfabesi üzerinde çalışır. CJK dilleri farklı bir belirteçleme gerektirir. Tam doğal dil araması için tsvector + GIN kullanın.

Diğer Dizinlerle Birleştirme

Birden çok filtre içeren sorgu, Bitmap And ile hem üçlü karakter dizisi dizinini hem de B-tree dizinini kullanabilir:

EXPLAIN ANALYZE
SELECT * FROM users
WHERE full_name ILIKE '%ali%' AND country = 'US';

Özet

pg_trgm, "baştaki joker karakter" sorununu çözer.

  • GIN üçlü karakter dizisi dizini → hızlı LIKE %x%
  • Yaklaşık eşleşme için % işleci ve similarity()
  • Sıralama için <-> uzaklığı
  • Otomatik tamamlama ve yazım hatalarına dayanıklı arama için idealdir

Hızlı Kontrol

Düzenli bir B-tree dizini WHERE name LIKE '%alice%' ile neden yardımcı olamaz?

Sıkça Sorulan Sorular

“Benzerlik Eşleştirme için Üçlü Arama (pg_trgm)” dersi ücretsiz mi?

Evet — “Benzerlik Eşleştirme için Üçlü Arama (pg_trgm)” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.

“Benzerlik Eşleştirme için Üçlü Arama (pg_trgm)” dersinde ne öğreneceğim?

pg_trgm eklentisi, GiST/GIN üçlü INDEX'leri ve similarity() ile benzer dizeleri bulun. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

SQL Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Benzerlik Eşleştirme için Üçlü Arama (pg_trgm)” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Benzerlik Eşleştirme için Üçlü Arama (pg_trgm)
  2. tsvector ve GIN ile Tam Metin Arama
  3. PostGIS ile Coğrafi Mekânsal INDEX'leme
  4. pgvector ile Vektör Araması
← SQL Academy Sayfasına Dön