YUKARI

Site İçi Arama Motoru Yapmak

Asp.Net ile Site İçi Arama Motoru Yapmak

Forumlarda bu konuyla ilgili çoğu kişi konu açmış veya açılmış olanlardan örnek vs. istemişler.Bana göre bu konu önemli bir konu ve bununla ilgili döküman, makale diğer konulara nazaran okadar sıklıkta değil.Aslında benimde fazla bir bilgim yok ama bende bu site içi arama nasıl olur onun mantığını göstermeye çalışacağım.

Öncelikle yeni bir web projesi oluşturuyoruz ve Default.aspx sayfamıza sol taraftaki toolbox dan 1 adet TextBox ve bir adet Button yerleştiriyoruz.

Daha sonra projemize yeni bir web form ekliyoruz ve bununda adını arama.aspx olarak kaydediyoruz.

Şimdi Default.aspx sayfamıza dönelim ve buttonumuza çift tıklayıp Button1_Click event ını açıyoruz. ve aşağıdaki kodu yazıyoruz.

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

Burada arama.aspx sayfasına kelime adında bir parametre gönderdik ve bu parametrenin bir değeri var oda TextBox daki yazılan değer.

Tekrar arama.aspx sayfamızı açalım ve Page_Load ımıza aşağıdaki kodlarımızı sırasıyla teker teker yazalım.Açıklamasını kodların altına yazacağım.

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

QueryString ile gelen veriyi gelen adında bir stringe atıyoruz ve bunu "guv" adında bir süzgeçten geçiriyoruz.Guv nerden geldi demeyin aşağıda açıklıcam.

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

baglanti.Open();

baglanti nesnemizi oluşturuyoruz ve bağlantımızı açıyoruz.

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

DataAdapter imizi oluşturduk ve sorgumuzu yazdık.Gördüğünüz gibi bütün incelik sorguda bitiyor.Siz isterseniz bu sorguyu dahada geliştirebilirsiniz ben bunu kullanıyorum .

DataSet Ds = new DataSet();

adapter.Fill(Ds, "Tablo");

Repeater1.DataSource = Ds;

Repeater1.DataBind();

Daha sonra yukarıdaki işlemleri yapıyoruz ve arama.aspx sayfamıza bir tane Repeater sürükleyip bırakıyoruz.

Şimdi size bu "guv" adını verdiğim süzgeçten bahsedeceğim.

public string guv(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;

}

Buradaki Replace 'ler tamamiyle güvenlik için yazılmıştır.Bunlarda neyin nesi diyebilirsiniz.Bknz. Sql Injection

Şimdi arama.aspx sayfanıza eklediğiniz Repeater kontrolune ekleyeceğiniz kodlardan bahsedeyim.Aslında bildiğiniz şeyler ama yinede yazalım yarım kalmasın.

<asp:Repeater ID="Repeater1" runat="server">

<ItemTemplate>

<%#Eval("baslik")%></ br>

</ItemTemplate>

<SeparatorTemplate>

<hr style="border-style: dotted none none none; border-color: #C0C0C0; border-top-width: 2px;" />

</SeparatorTemplate>

</asp:Repeater> 

siz isterseniz daha fazla şeylerde listeleyebilirsiniz.

Takıldığınız bir yer olursa burdan yardımcı olmaya çalışırım başka bir makalede görüşmek dileğiyle...

 

9. November 2008 11:57 by Administrator | Comments (9) | Permalink
1

Etiket Bulutu

Yazar Hakkında

Bu site görüşlerin paylaşıldığı kişisel bir blogdur. Site içeriğinden meydana gelebilecek sorunlardan site sahibi sorumlu değildir.Sitede yazılan her yazı tarafımca yazılmış olup, izinsiz veya link verilmeden alıntı yapılamaz. Yorumlar site sahibi tarafından onaylandıktan sonra yayınlanacaktır.

©KodArsivi.Net