Aslında MySQL'in arama konusunda çok güzel bir özelliği var. Full Text şeklinde..
Öncelikle bu şekilde arama yapacağınız varchar, text gibi alanları belirtiyorsunuz. Daha sonra arama yapacağınız konuları FULL TEXT SEARCH biçimlerini kullanarak arıyorsunuz. Ayrıca bu arama şeklinde aramanın sonuçlarına göre puanlama yapabiliyorsunuz. Örneğin: hasan yaşar diye bir arama yaptığınızda, hasan yaşar kelimeleri yanyana ise 10, yanyana ama aralarında başka kelimeler varsa 9, çok farklı yerdelerse 8, sadece biri geçiyorsa 7 gibi çeşitli puanlar veriyor. Elbette puanlamalar benim verdiğim kadar basit değil, mesela hasan yaşar kelimesi bir metinde 4 kez geçiyorsa onun puanı ile 1 kez geçenin puanı farklı oluyor.
Ayrıntılı bilgi ve örnekleri :
MySQL AB :: MySQL 5.0 Reference Manual :: 10.8.1 Natural Language Full-Text Searches adresinden alabilirsiniz..
Bahsettiğim örneğin sorgusu aşağıdaki şekilde olabilir..
SELECT id, baslik, yazi, MATCH (baslik, yazi) AGAINST ('hasan yaşar') AS puan FROM articles WHERE MATCH (baslik, yazi) AGAINST ('hasan yaşar');