Yazılımcının Günlüğü | YazilimGunlugu.Com
Arama
Makale Kategorileri
Üye Girişi
Şuanki online üyeler()
Aktif üye bulunmamaktadır.


Web Sitem Hangi Kelimeler ile Aranıyor?

Yazar: Gökhan BAĞCI

Kategori: ASP.NET

Eklenme Tarihi: 19.08.2007 12:58:43

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

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

Yazar Hakkında Yorum Yok Yorum Yaz Yazara ait diğer Makaleler
Tema
Anket
Visual Studio 2010 Beta 2'yi denediniz mi?


En Çok Okunan Makaleler
En Son Eklenen Makaleler
Soru Merkezinde Bekleyenler
Ana Sayfa | Hakkımızda | Editörler | Yazarlar | RSS RSS | İletişim
Yazılım Günlüğü 2007-2009 © Tüm Hakları Saklıdır.