BizimForumdayiz > Bilişim ve Teknoloji > Yazılım > Asp.net (Moderatörler: endless_gs1, AlwaysThink) > Web Sitem Hangi Kelimeler ile Aranıyor?

Reklamlar
Sayfa: [1]   Aşağı git
  Yazdır  
Gönderen Konu: Web Sitem Hangi Kelimeler ile Aranıyor?  (Okunma Sayısı 600 defa)
20 Ağustos 2007, 19:08:47
SeLiM
HeLacKiMi
Administrator
*******

Teşekkür 349
Offline Offline

Cinsiyet: Bay
Mesaj Sayısı: 5946


Herkes Burada Ya Sen???


WWW
« : 20 Ağustos 2007, 19:08:47 »

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.
Kod:
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;
}
 
Kod:
//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...
Logged
20 Ağustos 2007, 19:29:56
TÜRK
Haxan
Usta Üye
*

Teşekkür 361
Offline Offline

Cinsiyet: Bay
Mesaj Sayısı: 3611



WWW
« Yanıtla #1 : 20 Ağustos 2007, 19:29:56 »

kafam almadı bu işi... ama paylaşım için saol  Grin
Logged

Peygamberlerden Hazreti Nuh'un oğlu Yafes'in Türk adında biroğlu vardır. Türk Milletinin ceddi bu zattır.
Sayfa: [1]   Yukarı git
  Yazdır  
 
Gitmek istediğiniz yer:  

Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC
Rengli Theme By Helackimi & Forum
MySQL ile Güçlendirildi PHP ile Güçlendirildi XHTML 1.0 Geçerli! CSS Geçerli!
Bu Sayfa 0.355 Saniyede 26 Sorgu ile Oluşturuldu