Bu makalemde sizlere Arama Motorlarından sitelerimizin hangi kelimelerle arandığı konusuna değineceğiz. Herhangi bir Arama Motorundan arama yaptığımızda adres çubuğunda “q” parametresi ile aradığımız kelimeler gösterilir.
Ör: http://www.google.com.tr/search?q=sql+server
Yukarıdaki adresten de anlaşıldığı gibi kullanıcı “sql” ve “server” kelimelerini kullanıp arama yapmış. Eğer bu kelimelerle arama listesinde sizin siteniz çıkıyorsa ve kullanıcı sizin sitenizin linkini tıkladıysa “Referer” bilgisiyle beraber sizin sitenize yönlendirilir.
Yönlendirme işlemi tamamlandığında ise yapmamız gereken sayfamızın Page_Load olayında bilgileri yakalamak…
“q” parametresi linkin başında, ortasında ya da sonunda olabilir bunun için aşağıda yazdığım fonksiyonu kullanıp kelimeleri elde edeceğiz. Bu arada “q” parametresi özel bir ifadedir Arama Motorlarının %80’i “q” parametresi ile kelimeleri belirtir.
Öncelikle linkteki “q” parametresinde yer alan kelimeleri ayıracak kodumuzu yazalım.
public ArrayList QueryToKelime(string query) { //Bu kısımda eğer parametre baştaysa ? ifadesiyle başlangıç indeksini alıyoruz int pi = query.IndexOf(String.Format("?{0}=", "q")); //Eğer parametre başta değilse & ifadesiyle başlangıç indeksini alıyoruz pi = pi < 0 ? query.IndexOf(String.Format("&{0}=", "q")) : pi; //Eğer q parametresi yoksa boş değer döndürüp functiondan çıkıyoruz if (pi < 0) { return null; } //Kelimelerin başladığı indeksi buluyoruz int di = pi + 3; //Kelimelerin bittiği indeksi buluyoruz int si = query.IndexOf("&", di); //Eğer & işareti yoksa kelimeleri sonuna kadar kesiyoruz if (si < 0) { query = query.Substring(di); } //Eğer & işareti varsa işarete kadar olan kısmı kesiyoruz else { query = query.Substring(di, si - di); } //Adres çubuğunda türkçe karakterler ve noktalama işaretleri farklı bir biçimde belirtilir //Bizde bunları aşağıdaki değerlere göre tekrar düzenliyoruz query = query.Replace("%c3%a7", "ç"); query = query.Replace("%C3%87", "Ç"); query = query.Replace("%C4%9F", "ğ"); query = query.Replace("%C4%9E", "Ğ"); query = query.Replace("%C4%B1", "ı"); query = query.Replace("%C4%B0", "İ"); query = query.Replace("%C3%B6", "ö"); query = query.Replace("%C3%96", "Ö"); query = query.Replace("%C5%9F", "ş"); query = query.Replace("%C5%9E", "Ş"); query = query.Replace("%C3%BC", "ü"); query = query.Replace("%C3%9C", "Ü"); query = query.Replace("%2e", "."); query = query.Replace("%2c", ","); //ve kelimeleri geri döndürüyoruz... ArrayList Kelimeler = new ArrayList(); //.Split('+') yapıyoruz çünkü arama motorları farklı kelimeli ayırmak için + işareti kullanıyorlar string[] kelime = query.Split('+'); for (int x = 0; x < kelime.Length; x++) { Kelimeler.Add(kelime[x]); } return Kelimeler; } |
Daha sonra Page_Load olayında Referer’i yakalayıp varsa kelimeleri veritabanımıza ekliyoruz.
//Referer bilgisinin olup olmadığını kontrol ediyoruz if (Request.UrlReferrer != null) { //Referer varsa yazdığımız function ile kelimeleri elde ediyoruz ArrayList Kelimeler = QueryToKelime(Request.UrlReferrer.Query); //Yine aynı şekilde Kelime olup olmadığını kontrol ediyoruz if (Kelimeler != null) { //Eğer kelimeler mevcutsa bunları sırayla döndürüp tek tek veritabanımıza ekliyoruz OleDbConnection con2 = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/App_Data/gb.mdb")); OleDbCommand com; con2.Open(); for (int x = 0; x < Kelimeler.Count; x++) { com = new OleDbCommand("Insert Into aranan(Kelime, Tarih, Site) Values(@Kelime, @Tarih, @Site)", con2); com.Parameters.AddWithValue("@Kelime", Kelimeler[x]); com.Parameters.AddWithValue("@Tarih", DateTime.Now.ToShortDateString()); //Request.UrlReferrer.DnsSafeHost ile hangi siteden geldiğini bilgine alıyoruz com.Parameters.AddWithValue("Site", Request.UrlReferrer.DnsSafeHost); com.ExecuteNonQuery(); } con2.Close(); } } |
Böylelikle artık sitenizin hangi kelimeler ile arandığını bile bileceksiniz. Bu bilgilere göre site içeriğinizi değiştirebilir, meta taglarınızı ayarlayabilir, reklam yönetiminizde kullanabilirsiniz.
Başka bir makalemde görüşmek dileğiyle…
Gökhan BAĞCI
Microsoft Certified Professional