Makale Özeti

Bu makalemde sizlere Arama Motorlarından sitelerimizin hangi kelimelerle arandığı konusuna değineceğiz.

Makale

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