# Tam Metin Arama

Adres: https://softwaredictionary.org/tr/terimler/full-text-search
Kategori: Veritabanları
Son güncelleme: 2026-09-30
İngilizcesi: Full-Text Search
Okunuşu: ful tekst sörç

Kısaca: Tam metin arama, verilen sözcükleri ya da ifadeleri içeren dokümanları bir metin indeksinde arayarak bulan ve sonuçları alaka düzeyine göre sıralayan tekniktir.

## Tam metin arama nedir?

Tam metin arama, kullanıcıların sözcük yazıp bunları içeren kayıtları bulmasını sağlar; makaleler, ürün açıklamaları ya da destek talepleri gibi uzun metinlerin içinde bile. Bir alanın tamamında tam eşleşme aramak yerine tek tek sözcükleri eşleştirir ve en alakalı sonuçlar önce görünsün diye sonuçları sıralar. Çoğu web sitesinin ve uygulamanın arama kutusunu çalıştırır.

Önceden bir ters indeks (inverted index) oluşturarak çalışır. Her metin, token adı verilen sözcüklere bölünür; bunlar küçük harfe çevrilerek, "the" gibi yaygın dur sözcükleri (stop word) kaldırılarak ve kök çıkarma (stemming) ile kök biçime indirgenerek normalleştirilir; böylece "running" ve "runs" ikisi de "run" olur. İndeks daha sonra her sözcüğü onu içeren dokümanların listesine eşler ve BM25 gibi bir sıralama formülü her eşleşmeyi sözcüklerin ne sıklıkla ve nerede geçtiğine göre puanlar.

Ters indeks, bir ders kitabının sonundaki dizin gibi çalışır: "fotosentez" kelimesini bulmak için her sayfayı okumak yerine kelimeyi arar ve doğrudan listelenen sayfalara atlarsınız. Birçok ilişkisel veritabanı yerleşik tam metin arama içerir; özel arama motorları ise yazım hatası toleransı, eş anlamlılar, vurgulama ve çok yönlü (faceted) filtreler gibi özellikler ekler.

Tam metin arama çoğu zaman bir SQL `LIKE '%word%'` sorgusuyla karıştırılır. `LIKE` tam bir alt dize arar, örüntü bir joker karakterle başladığında genellikle normal bir indeks kullanamaz ve alaka düzeyi ya da sözcük biçimleri hakkında hiçbir fikri yoktur. Tam metin arama ayrıca anlamı embedding'lerle eşleştiren anlamsal ya da vektör aramadan da farklıdır; bu yüzden birçok modern sistem ikisini hibrit bir aramada birleştirir.

## Önemli noktalar

- Tam metin arama yalnızca tam alan değerlerini değil, metnin içindeki sözcükleri eşleştirir.
- Her sözcüğü onu içeren dokümanlara eşleyen bir ters indekse dayanır.
- Tokenizasyon, dur sözcükleri ve kök çıkarma farklı sözcük biçimlerinin eşleşmesini sağlar.
- Sonuçlar alaka düzeyine göre, çoğu zaman BM25 formülüyle sıralanır.
- Büyük tablolarda `LIKE '%word%'` sorgusundan çok daha hızlı ve akıllıdır.

## Örnek: PostgreSQL'de tam metin arama

```sql
-- Add a searchable column built from the title and body, then index it
ALTER TABLE articles
  ADD COLUMN search tsvector
  GENERATED ALWAYS AS (to_tsvector('english', title || ' ' || body)) STORED;

CREATE INDEX articles_search_idx ON articles USING GIN (search);

-- Find and rank articles that contain both words
SELECT title, ts_rank(search, query) AS rank
FROM articles, to_tsquery('english', 'database & index') AS query
WHERE search @@ query
ORDER BY rank DESC
LIMIT 10;
```

## Sık sorulan sorular

**Tam metin arama ile SQL'deki LIKE arasındaki fark nedir?**

`LIKE` tam bir karakter dizisi arar ve örüntü `%` ile başladığında genellikle tüm tabloyu tarar. Tam metin arama ise bir indeks kullanır, sözcük biçimlerini anlar ve sonuçları alaka düzeyine göre sıralar.

**Tam metin arama için ayrı bir arama motoruna ihtiyacım var mı?**

Her zaman değil. PostgreSQL, MySQL ve SQLite dahil birçok veritabanında, birçok uygulama için yeterli olan yerleşik tam metin arama vardır; özel bir arama motoru ise çok büyük veri kümelerinde ya da yazım hatası toleransı ve çok yönlü filtreleme gibi gelişmiş özelliklerde işe yarar.

**Ters indeks nedir?**

Ters indeks, her sözcüğü göründüğü dokümanların listesine eşleyen bir veri yapısıdır. Bir arama motorunun her metni taramadan tüm eşleşen dokümanları bulmasını sağlar.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
