MySQL full-text search (tam metin arama) nasıl kullanılır?

MySQL veritabanı yönetim sisteminde, metin verileri üzerinde etkili bir biçimde arama yapma yeteneği sunan tam metin arama özelliği bulunmaktadır. Bu özellik, özellikle büyük metin parçalarının bulunduğu veritabanlarında önemli bir rol oynamaktadır. Full-text search, veritabanındaki metin sütunlarını indeksleyerek, kelime bazında arama yapmayı mümkün kılar. Bu yazıda, MySQL’de tam metin arama kullanımı hakkında detaylı bilgiler verilecektir.

Tam Metin Arama Nedir?

Tam metin arama, belirli kelimeleri veya terimleri içeren metinleri hızlı bir şekilde bulmayı sağlayan bir arama tekniğidir. MySQL, yalnızca belirli veri türlerinde (örneğin, CHAR, VARCHAR, TEXT) kullanılabilen ve metin sütunlarının indekslenmesi ile etkili bir hale gelen bu özelliği barındırmaktadır. Full-text arama, kullanıcıların metin içinde kelimeleri veya kelime gruplarını aramasına olanak tanır ve sonuçları sıralı bir şekilde sunar.

Tam Metin İndeksi Oluşturma

Tam metin arama gerçekleştirmek için öncelikle metin sütunlarına tam metin indeksi eklemek gerekir. Bu işlem, bir tablo oluşturulurken veya mevcut bir tabloya indeks eklenirken yapılabilir. Örneğin, aşağıdaki gibi bir tablo oluşturulabilir:

“`sql
CREATE TABLE makaleler (
id INT AUTO_INCREMENT PRIMARY KEY,
baslik VARCHAR(255),
icerik TEXT,
FULLTEXT(baslik, icerik)
);
“`

Yukarıdaki SQL cümlesinde `FULLTEXT` ifadesi, `baslik` ve `icerik` sütunları için tam metin indeksi oluşturur. Böylece, bu sütunlarda tam metin arama yapılabilecektir.

Verilerin Eklenmesi

Tam metin indeksi oluşturulduktan sonra, tabloya veri eklemek gerekir. Aşağıdaki örnek ile tabloya birkaç örnek kayıt eklenebilir:

“`sql
INSERT INTO makaleler (baslik, icerik) VALUES
(‘MySQL ve Tam Metin Arama’, ‘MySQL, yazılım geliştiricilerin veritabanı yönetim sistemlerini kullanırken ihtiyacı olan bir araçtır.’),
(‘Gelişmiş SQL Sorguları’, ‘SQL, Structured Query Language yani Yapılandırılmış Sorgu Dili anlamına gelir.’),
(‘Veritabanı Tasarımı’, ‘Doğru veritabanı tasarımı, verilerin etkin bir şekilde saklanmasını sağlar.’);
“`

Bu şekilde tablonun içerisine birkaç makale eklenmiştir.

Tam Metin Arama Sorguları

Tam metin arama sorgusu, `MATCH` ve `AGAINST` ifadeleri kullanılarak yapılır. Aşağıda, `makaleler` tablosunda “MySQL” kelimesini arayan bir sorgu örneği bulunmaktadır:

“`sql
SELECT FROM makaleler
WHERE MATCH(baslik, icerik) AGAINST(‘MySQL’);
“`

Bu sorgu, `baslik` veya `icerik` sütunlarında “MySQL” kelimesini içeren tüm kayıtları döndürür. MySQL, bu sorguyu çalıştırırken indeksi kullanarak arama işlemini hızlandırır.

Farklı Arama Modları

MySQL, tam metin arama işlemleri için birkaç farklı mod sunar. Varsayılan mod, “natural language mode” olarak bilinir ve arama terimlerini doğal dil sırasına göre değerlendirir. Ayrıca, “boolean mode” seçeneği de mevcuttur. Bu modda, kullanıcı belirli operatörler kullanarak arama sonuçlarını daha da özelleştirebilir. Örneğin:

“`sql
SELECT FROM makaleler
WHERE MATCH(baslik, icerik) AGAINST(‘+MySQL -veritabanı’ IN BOOLEAN MODE);
“`

Bu sorgu, “MySQL” kelimesini içeren ve “veritabanı” kelimesini içermeyen kayıtları getirir. Burada `+` ve `-` operatörleri, arama teriminin zorunlu ya da hariç tutulması gerektiğini belirtir.

Sonuç Seti Sıralama

MySQL, tam metin arama sonuçlarını sıralamak için `MATCH` fonksiyonunun sağladığı bir relevans (ilişkililik) puanını kullanır. Bu puana göre, arama sonuçları en alakalı olanlardan başlayarak sıralanır. Aşağıdaki sorgu ile sonuçlar relevans puanına göre sıralanabilir:

“`sql
SELECT , MATCH(baslik, icerik) AGAINST(‘MySQL’) AS relevance
FROM makaleler
WHERE MATCH(baslik, icerik) AGAINST(‘MySQL’)
ORDER BY relevance DESC;
“`

Bu sorgu, “MySQL” kelimesine en yüksek relevans puanına sahip kayıtları önceliklendirerek döndürmektedir.

Üst Sınırlandırmalar ve Dikkat Edilmesi Gerekenler

MySQL’deki tam metin arama, belirli kelime uzunluklarına ve güvenli ya da güvenilmeyen terimlere yönelik bazı sınırlamalara sahip olabilir. Varsayılan olarak, 3 karakterden daha kısa kelimeler ise dikkate alınmaz. Ayrıca, stop word (durdurma kelimeleri) listesi nedeniyle bazı yaygın terimler arama yapıldığında göz ardı edilir. Kullanıcılar, bu tür sınırlamaları aşmak için ayarları özelleştirebilir.

Tam metin arama, MySQL veritabanında metin bazlı verilerin aranabilirliğini artırmak için önemli bir araçtır. Yeterli yapılandırma ve doğru kullanımla etkili sonuçlar elde edilebilir.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz

SON İÇERİKLER

İLGİNİZİ ÇEKEBİLİR