tsvector ve GIN ile Tam Metin Arama
tsvector sütunları, GIN INDEX'leri ve yapılandırılabilir metin arama sözlükleriyle üretime hazır tam metin araması oluşturun.
tsvector ve GIN ile Tam Metin Arama, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 2. 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.
Alt Dizeden Öte: Sözcük Farkındalıklı Arama
Tam metin araması (FTS) sözcükleri anlar: kök bulma, durdurma sözcükleri ve sıralama. PostgreSQL bunu tsvector / tsquery türleri aracılığıyla yerleşik olarak destekler.
tsvector Oluşturma
Bir belgeyi ayrıştırın:
SELECT to_tsvector('english', 'The quick brown foxes jumped over');
-- 'brown':3 'fox':4 'jump':5 'quick':2tsquery Oluşturma
Bir sorguyu ayrıştırın:
SELECT to_tsquery('english', 'fox & jumping'); -- 'fox' & 'jump'
SELECT websearch_to_tsquery('english', 'fox jumping -lazy');Eşleştirme: @@
Bir belgeyi bir sorguya karşı sınayın:
SELECT 'fox jumping'::tsvector @@ 'fox & jump'::tsquery; -- tFTS için Dizin Oluşturma
Bir tsvector sütunu ve GIN dizini ekleyin:
ALTER TABLE articles
ADD COLUMN search_doc tsvector
GENERATED ALWAYS AS (
to_tsvector('english', coalesce(title,'') || ' ' || coalesce(body,''))
) STORED;
CREATE INDEX articles_search_idx ON articles USING GIN (search_doc);Sorgulama
Hızlı filtrelenmiş arama:
SELECT id, title FROM articles
WHERE search_doc @@ websearch_to_tsquery('english', 'postgres performance')
ORDER BY ts_rank(search_doc, websearch_to_tsquery('english', 'postgres performance')) DESC
LIMIT 20;ts_rank ile Sıralama
ts_rank, sonuçları sözcük sıklığına ve konumuna göre puanlar. ts_rank_cd, Cover Density'yi (konum farkındalıklı) kullanır:
SELECT id, ts_rank_cd(search_doc, q) AS rank
FROM articles, websearch_to_tsquery('english', $1) AS q
WHERE search_doc @@ q
ORDER BY rank DESC LIMIT 20;ts_headline ile Örnekler
Eşleşen parçaları, eşleşen sözcükler vurgulanmış şekilde gösterin:
SELECT ts_headline('english', body,
websearch_to_tsquery('english', $1),
'StartSel=<mark>, StopSel=</mark>, MaxFragments=2')
FROM articles
WHERE search_doc @@ websearch_to_tsquery('english', $1);İfade Araması
Ardışık sözcükleri bulun:
SELECT * FROM articles
WHERE search_doc @@ phraseto_tsquery('english', 'database performance');Birden Çok Alan için Ağırlıklandırma
setweight kullanarak başlığa gövdeden daha fazla ağırlık verin:
ALTER TABLE articles
ADD COLUMN search_doc tsvector
GENERATED ALWAYS AS (
setweight(to_tsvector('english', coalesce(title,'')), 'A') ||
setweight(to_tsvector('english', coalesce(body,'')), 'B')
) STORED;Dil Yapılandırması
english yapılandırması durdurma sözcüklerini, kök bulmayı ve diğer ayarları tanımlar. PostgreSQL birçok dille birlikte gelir; dile göre geçiş yapın:
SELECT to_tsvector('turkish', 'Veritabanı performansı');Yerleşik FTS'nin Sınırları
İngilizceye benzer diller ve temel sıralama için iyidir. Daha gelişmiş gereksinimler (BM25, vektör gömmeleri, boyutlu arama) için Postgres'in yanında Elasticsearch veya OpenSearch kullanmayı düşünün.
Özet
PostgreSQL FTS, yetkin bir varsayılan seçenektir.
- tsvector + tsquery + @@ eşleştirmesi
- Hız için GIN dizini
- İnsan girdisi için websearch_to_tsquery
- Sıralanmış ve vurgulanmış sonuçlar için ts_rank/ts_headline
Hızlı Kontrol
Makaleleri tam metin sorgusuna göre hızlıca filtrelemeniz gerekiyor. Hangi dizini kullanırsınız?
Sıkça Sorulan Sorular
“tsvector ve GIN ile Tam Metin Arama” dersi ücretsiz mi?
Evet — “tsvector ve GIN ile Tam Metin Arama” 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.
“tsvector ve GIN ile Tam Metin Arama” dersinde ne öğreneceğim?
tsvector sütunları, GIN INDEX'leri ve yapılandırılabilir metin arama sözlükleriyle üretime hazır tam metin araması oluşturun. 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 2. dersidir.
“tsvector ve GIN ile Tam Metin Arama” 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
- Benzerlik Eşleştirme için Üçlü Arama (pg_trgm)
- tsvector ve GIN ile Tam Metin Arama
- PostGIS ile Coğrafi Mekânsal INDEX'leme
- pgvector ile Vektör Araması