22 Nisan 2012 Pazar

Google Tarafından Kullanılan "Bunu mu Demek İstediniz?" Uygulaması

Merhaba! Bugün Google tarafından kullanılan bir uygulamanın benzerini beraber yapacağız!


Büyük arama motorlarında bir kelime ya da deyim aradığınızda, kelimeleri eksik ya da yanlış yazarsanız, "bunu mu demek istediniz?" ibaresi karşınıza çıkacaktır. Büyük bir kolaylık sağlayan bu işlem, PHP programlama dilinde levenshtein() fonksiyonunun gücüyle yapılabilmektedir. İnternet kullanıcılarının çok sabırsız olması, hızlı sonuç alma isteğini şiddetle büyük bir ihtiyaç haline getirmektedir. Şunu da belirtmeliyim ki, bu tür uygulamalar geliştirmek için uygulanması gereken tek yol, bu fonksiyonu kullanmak değildir.


Kullanım
levenshtein() fonksiyonunun kullanılması için bir referans kelime ya da karakter katarı dizisi olması gerekmektedir. Aşağıdaki uygulama, levenshtein fonksiyonunun kullanıldığı iyi bir örnek olacak:

$aranan_kelime = 'ph'; //Bu değerin, veritabanından geldiğini varsayalım.
$diziler = array('php', 'asp', '.net', 'jsp', 'java', 'javascript', 'html', 'c', 'css', 'xml');
//$diziler dizisi, veritabanından çekilen birçok veri dizisi olduğu varsayılsın.
$uzunluk = -1;

foreach($diziler as $dizi) {
 $benzerlik = levenshtein($aranan_kelime, $dizi);
 if($benzerlik == 0) {
  $yakinlik = $dizi;
  $uzunluk = 0;
 }
 if(($benzerlik <= $uzunluk) || ($uzunluk < 0)) {
  $yakinlik = $dizi;
  $uzunluk = $benzerlik;
 }
}

print "Aranan Kelime: ".$aranan_kelime."
";
if($uzunluk == 0) {
 print "
".$yakinlik." için herhangi bir sonuç göremedik!"; 
} else {
 print "
Bunu mu demek istediniz? ".$yakinlik;
}

Yukarıda görüldüğü gibi, "ph" kelimesi aranmak istenmiş, lakin veritabanında böyle bir ifade bulunmadığı için, ki burada bizim veritabanımız $diziler isimli dizi, ona en yakın sonuç olan "php" ifadesi yazdırılmış ve önerilmiştir.


Burada belirtmek istediğim önemli bir husus, $aranan_kelime değişkenidir. Bu değişken, bizim manuel olarak girdiğimiz bir değerdir. Aslında bu değer, bir form alanından gelen değer olmalıdır. Bunu kendinizin uygulaması, öğrenmeniz açısından oldukça yararlı olacaktır.


Bunu mu demek istediniz?

Uygulama'nın demosunu görmek isterseniz, bu adrese girip inceleyebilirsiniz.

Bir sonraki yazımızda görüşmek üzere...

Hiç yorum yok:

Yorum Gönder