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+serverYukarı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;
}
//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.
alıntıdır. yararlı olacağını düşündüğüm için buraya aktardım...