Asp.Net ile Site İçi Arama Motoru Yapımı

Asp.net ile site içi arama motorunu yapmaya  başlayalım. Hemen her web sayfasında olması gereken bir uygulama olduğu gibi asp.net ile yapmakta ayrı bir deneyim olacaktır. Öncelikle yeni bir web uygulaması oluşturalım ve gerekli kütüphaneleri dahil ettikten sonra default.aspx sayfamıza toolbox bölümünden bir textbox ekleyelim. Şimdi bir de buton ekleyelim ve ardından bir web form ekleyerek adını da arama.aspx olarak kaydedelim. Butonun içerisine çift tıklayarak gerekli kodları yazalım.

Response.Redirect("arama.aspx?kelime=" + TextBox1.Text + "");

 

Şimdi arama.aspx sayfamıza kelime adında bir değer gönderdik. Gelecek değer textbox içinden gelecek değerdir. Şimdi o değeri sayfamıza alacağız. Şimdi arama.aspx sayfamızı tekrar açarak Page_Load kısmına şu kodları yazalım.

string gelen = guvenlik(Request.QueryString["kelime"].ToString());

Şimdi de QueryString ile gelen değeri gelen adında bir değişkene atayıp ardından bir “guvenlik” adında süzgeçten geçirdik.

OleDbConnection baglanti = newOleDbConnection("Provider=Microsoft.jet.oledb.4.0; Data source=" + Server.MapPath("App_Data\\database.mdb"));
baglanti.Open();

 

Bağlantı nesnesi oluşturup bağlantıyı açıyoruz.

OleDbDataAdapter adapter = newOleDbDataAdapter("Select * From makale WHERE kategoriadi and baslik and aciklama LIKE '%" + gelen.Replace("'", "'") + "%'", baglanti);

 

DataAdapter’i de oluşturduktan sonra iş bitmiş sayılır. Bütün iş sorguda bitiyor zaten. Bu sorgu farklı şekillerde kullanılabilir.

DataSet Ds = newDataSet();
adapter.Fill(Ds, "Tablo"); Repeater1.DataSource = Ds;
Repeater1.DataBind();

 

Bu işlemleri de yaptıktan sonra  arama.aspx sayfasına bir Repeater ekliyoruz. Şimdi guvenlik süzgecinden bahsedelim.

publicstring guvenlik(string cevir) {
cevir = Regex.Replace(cevir, ",", ""); cevir = Regex.Replace(cevir, "/", "");
cevir = Regex.Replace(cevir, "\n", ""); cevir = Regex.Replace(cevir, "/?", "");
cevir = Regex.Replace(cevir, "/*", ""); cevir = Regex.Replace(cevir, "'", "");
cevir = Regex.Replace(cevir, "&", ""); cevir = Regex.Replace(cevir, "<", ""); cevir = Regex.Replace(cevir, ">", "");
cevir = Regex.Replace(cevir, "=", "");
return cevir; }

 

Bu güvenlik fonksiyonu sql injection için yazılmıştır. Tamamen güvenlik içindir ve yaygın olarak kullanılmaktadır. Bu sayede gelen değeri aldık. Şimdi Repeater’in içine yazılacak kodlara bakalım.

<asp:RepeaterID="Repeater1"runat="server">
<ItemTemplate> <%#Eval("baslik")%>
ItemTemplate>
<SeparatorTemplate>
<hrstyle="border-style: dottednonenonenone; border-color: #C0C0C0; border-top-width: 2px;"/>
SeparatorTemplate>
asp:Repeater>

 

Normal düzeyde bir site içi arama motoru bu şekilde tasarlanabilir.Ekleme çıkarmalar ile birlikte kendinizce uyarlayabilirsiniz. Asp.net ile site içi arama motoru yapımı işinize yarar umarım. İyi çalışmalar.

5/5 - (1 vote)

AuthorHarun ALP

Bu adam , bilgi sahibi olduğu konularda makalelerini daha bilgilendirici hale getirip görseller ile süslüyor ve seo uyumlu makaleler ortaya çıkarıyor. Güncel webmaster konularını işlemekten keyif alıyor ve genelde her makale aslında bir sorunun çözümü niteliğinde.

4 thoughts on “Asp.Net ile Site İçi Arama Motoru Yapımı

  1. Hocam elinize sağlık. Fakat veritabanı olmayan web sitesinde asp.net sayfalarının içerik ve title bilgilerini nasıl aratabiliriz.

    • Öncelikle veritabanı olmayan bir asp ürünü web sitesine dinamik diyemeyiz haliyle site içi arama da yapılamaz çünkü iletişime geçeceğiniz bir depo yok. Elbette veriler bir dizi türünde tutuluyor ise buradan aratma işlemi yapılabilir. Bunun için Array.IndexOf() metodunu kullanabilirsiniz. Ancak yine bu da istenilen sonuç değil gibi görünüyor. Diğer bir açıdan bakacak olursak bu bahsi geçen site sizin ise dediğim gibi arama yapabilirsiniz ancak diğer türlü veri (ç)alma işlemi yapmak zorundasınız. Bir bot tarzı düşünün.Bütün sayfaların linklerini toplayacak ardından bu linkleri filtreleyip döngü ile her sayfanın kendine ait etiketine göre arama yapılıp listelenmesi gerekir.

    • Bunu suan ben arıyorum nasıl yaptınız ?

      • Dediğim gibi arkadaş nasıl yaptı bilmiyorum ancak en sağlıklı yöntem, sayfadaki tüm linkleri toplamaktır. Ardından bu linkler bir dizide txt de tutulmalıdır. Ki aradığınız bilgi herhangi bir sayfada olabilir. Daha sonra yine anlatılan şekildeki gibi bir textbox koyularak biraz değiştirip veritabanında sorgu yapmak yerine text ya da dizi içinde sorgu yapılır. Var ise sonuç döndürülür. Şayet site tek sayfa ise ki tek sayfa ise buna ne ihtiyaç var, o zaman sayfanın kaynak kodunu alabilmelisiniz. Sonrasında indexof metodu ile arama yapılabilir string fonksiyonlarını ufak bir araştırıp kaynaktan istenen veri varsa yazdırabilirsiniz. Umarım yapabilirsiniz. Bunu yapma yolunda söylediklerimi icraata dökmek size çok şey katar.

Yazar için bir yanıt yazın Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir