Kayıt Ol

Giriş

Şifremi Kaybettim

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

soru ekleme

Soru sormak için giriş yapmalısınız.

Giriş

Kayıt Ol

.........

Mysql Full-Text Search Nedir?

Mysql Full-Text Search Nedir?

Like ile yapılan query’ler oldukça kasmaktadır. Bunun için hem mysql’de hem de mssql’de sıkça kullanılan full-text search Tam metin arama seçeneği sadece Mysql’ ait bir özellikdir. Binlerce kayıtdan oluşan bir tablo üzerinde bu özelliği kullanarak ilgili kaydı kolayca bulabiliriz.

Eğer bizim zaten bir tablonuz varsa ve bu tabloya fulltext index eklemek istiyorsak ALTER TABLE fonksiyonu kullanarak ekleyebiliriz. Örnek: ALTER TABLE TableName ADD FULLTEXT(field1, field2);

Fultext indexleri sadece Varchar,char ve Text alanları için oluşturabiliriz.Tablo tipi MyISAM olmalıdır.

Fulltext arama örnek: select ad from Ornek where match(ad, soyad, Adres) against(‘iyidir’);
Görüldüğü gibi Mathc kelimesinden sonra fultext indexe dahil olan tüm alanları yazmamız gerekiyor, against kelimesinden sonra ise bu alanlarda aranacak kelimeyi yazıyoruz.
Yukarıdaki komutu normal SQL komut olarak aşağıdaki şeklde yazabilir ve aynı sonucu alabiliriz.
select ad from Ornek where adres like ‘%iyidir%’;
Fakat binlerce hatta milyonlarca kayıt olduğunu düşünürseniz, son örneği epey beklemek zorunda kalacaksınızdır.
Mysql de Fulltext search özelliği eğer aranan kelime  tablodaki her satırda varsa hiç bir değer döndürmeyecektir.İstenen de zaten budur.
Fulltext search ile kelimenin tamamı varsa bulunur, yani sağında veya solunda boşluk olmalı veya nokta,virgül vs. gibi bir işaret olmalı.
Fulltext search özelliğinde aranan kelime en az dört karekter olmalı, yoksa değer döndürmez. Fakat En fazla istenildiği kadar kelime yazılabilir.
Aranan kelimenin büyük küçük harf olmazı fark etmez.Fakat Türkçe İ,ÇŞ,ı, gibi ingilizcede olmayan karakterler için sorun olabilir.
Fulltext Search ile IN BOOLEAN modunda Arama:
select ad from Ornek where match(soyad, Adres) against(‘+isimli -is
minde’ in boolean mode);
Yukarıdaki Querye dikkat edecek olursak Mahtch içinde “Ad” alanı bulunmamaktadır, demekki boolean modda arama yaparken tüm fulltext index alanlarını eklemek zorunda değiliz, hangi alanda arama yapılacaksa onu ekliyoruz.Yukarıdaki Queryin anlamı soyad ve adres alanlarında “isimli” kelimesi olan ve “isminde” kelimesi olmayan kayıtları döndür demek istiyor.
Boolean modda İşaretlerin anlamları:
+ (artı) :Önüne konulan kelime varsa o kaydı döndürür.
– (eksi) : Önünde konulan kelimenin olmadığı kaydı döndürür.
Bir kelimenin önünde “+” veya “-” işareti yoksa arama MATCH() … AGAINST() gibi davranır, benzerliği en fazla olandan başlayarak kayıtları döndürür Boolean mod yokmuş gibi davranır.
< >   : Bu iki karekter kelimenin benzerlik oranına(relevance) katkısını azaltır veya arttırır. < işreti katkıyır azaltır, > işareti katkıyı arttırır.
(  )  : Bir alt String (kelimeler dizesi) içinde bir grup kelimeyi aramada kullanılır.
~   : Bir kelimenin benzeşme oranına katkısı negatifse bu kelimelerin olduğu kayıtları döndürmez. Özellikle gürültü oluşturan kelimelerin ayıklanmasında kullanılır.
*    : Bir kelimenin sonuna eklendiğinde kelimenin sonuı ne olursa olsun o kelimenin olduğu kaydı döndürür. Normal SQL deki “%” işareti gibi düşünün Fakat * işareti sadece kelime sonuna eklenmelidir..
”    :Çift tırnak içinde yazılan bir cümle harfi harfine yazıldığı gibi aranır, büyük-küçük harfe yine duyarlı değildir, fakat aradaki gürültü kelimeleri varsa bu kayıt dönmez..

  • Örnek bir C# uygulaması

 

Hakkında Hilal Saim

Namık Kemal Üniversitesi/Bilgisayar Mühendisliği

Beni Takip Et

Yorum ( 1 )

  1. güzel tşkler

Leave a reply

*