Henüz Üye Degilmisin ? Üye Ol | Parolamı Unuttum
Paneli Kapat
SANALGUCLULER Hack ve Güvenlik Platformu  

Live Search XML Web Servisleri'ni Kullanarak Kendi Arama Motorunuzu Yaratın

Hiç kendi arama motorunuzu programlamayı düşündünüz mü? Peki bu konuda hiç araştırma yaptınız mı? Emin olun hiç kolay bir iş değil. Onun yerine biraz kolaya kaçıp hazır arama motorlarından faydalanabiliriz. Gün geçtikçe gelişen Live arama motorunu kullanacağımız bu makalemizde ilk olarak arama motorunun XML web servislerini kullanabilmek için [Yanlizca 10

AnaSayfa Kimler Online Bugünki Mesajlar Forumları Okundu Kabul Et
Go Back   SANALGUCLULER Hack ve Güvenlik Platformu > Web Programlama Dilleri > ASP-.NET

Yeni Konu aç  Cevapla
 
LinkBack Seçenekler Stil
Alt 15 Ocak 2012, 14:03   #1
Mareşal
Ceybi Nickli Üyenin Kullanıcı Resmi (Avatar)
Üyelik Tarihi: 12 Ocak 2012
Mesajlar: 789
Rep Puanı : 10
Rep Derecesi : Ceybi isimli üye Tecrübe puanını kapatmıştır.
Standart Live Search XML Web Servisleri'ni Kullanarak Kendi Arama Motorunuzu Yaratın

Hiç kendi arama motorunuzu programlamayı düşündünüz mü? Peki bu konuda hiç araştırma yaptınız mı? Emin olun hiç kolay bir iş değil. Onun yerine biraz kolaya kaçıp hazır arama motorlarından faydalanabiliriz. Gün geçtikçe gelişen Live arama motorunu kullanacağımız bu makalemizde ilk olarak arama motorunun XML web servislerini kullanabilmek için [Yanlizca 10 Saniyede Üye Olmak Için TIKLAYINIZ...] adresinden Create and Manage Application IDs bölümüne girerek kendimize bir AppID (Uygulama Kimliği) yaratmamız gerekiyor.

Live Search AppID yaratma yolundayız.
AppID yaratma yolunda ilerlediğimizde bizden LiveID kimlik bilgilerimiz isteniyor. Giriş yaptıktan sonra arama motorumuzu kullanacağımız uygulamamızla ilgili bir anahtar isim verdikten sonra AppID'mizi hemen alabiliyoruz.

Live AppID'mizi uygulama ismi vererek alabiliyoruz.
Tüm bu işlemleri tamamladıktan sonra artık [Yanlizca 10 Saniyede Üye Olmak Için TIKLAYINIZ...] adresindeki web servisini uygulamamızda kullanmaya başalayabiliriz. Projenize Solution Explorer içerisinde sağ tuş ile tıkladığınızda gelen menüden Add Web Reference seçeneğini seçerek tanımlama işlemlerini tamamlayabilirsiniz.

Kullanacağımız web servisini projemize web reference olarak ekliyoruz.
Live arama motoruna ait web servisini kullanırken özel sorgular hazırlayarak farklı arama filtreleri uygulama şansımız da var. Gelin, örneğimizde sadece üç site içerisinde arama yapan bir arama motoru oluşturalım. Kullanabileceğiniz filtreleme seçenekleri çok geniş olduğu için bu konuyu makalenin dahiline almayacağım, siz isterseniz [Yanlizca 10 Saniyede Üye Olmak Için TIKLAYINIZ...] adresinden geniş bilgi alabilirsiniz.
Kullanacağımız filtrelemede sadece belirli web siteleri içerisinde arama yaptırılarak sonuçların bize Live Search tarafından döndürülmesini istiyor olacağız. Bu nedenle ilk olarak yapacağım şey bize filtreleme sorgusunun metnini döndüren bir fonksiyon yazmak olacak.
PHP- Kodu:
Function SorguYarat(ByVal Aranan) As  String 
        Dim Writer 
As New  System.Text.StringBuilder 
        Writer
.Append(Aranan
        
Writer.Append("   ("
        
Writer.Append("site:"
        
Writer.Append("yazgelistir.com"
        
Writer.Append("   OR "
        
Writer.Append("site:"
        
Writer.Append("nedirtv.com"
        
Writer.Append("   OR "
        
Writer.Append("site:"
        
Writer.Append("microsoft.com.tr"
        
Writer.Append(")"
        Return  
Writer.ToString 
    End 
Function 
Yukarıda hazırlamış olduğumuz fonksiyon bir StringBuilder tanımlayarak verdiğimiz metinleri aranacak olan metnin sonuna ard arda ekliyor. Aslına bakarsanız yolladığımız sorgu bu kod içerisinde sabit fakat ben özellikle bu şekilde yaparak sizin bu kodu veritabanına bağlamanızı kolaylaştırmak istedim. Böylece sitelerinin isimlerini eklediğimiz kodları bir döngü içerisinde kullanarak veritabanınızdan gelen site adlarını sorguya ekleyerek, içerisinde arama yapılacak sitelerin listesini dinamik olarak veritabanında çekebilirsiniz.
Şimdi sıra geldi arama işlemini yapacak olan fonksiyonu. Ben fonksiyonumu bir DataTable döndürecek şekilde yazacağım. Böyle yaparak fonksiyonumu ileride direk bir Repeater veya GridView'e bağlamamı kolaylaştırıyorum. Fonksiyonun ana yapısını oluşturmadan içerisindeki kodları yazalım.
'
PHP- Kodu:
Verileri  depolayacağımız  sana tablomuzu oluşturuyoruz
        
Dim MyData As New DataTable("Sonuclar"
        
Tablomuza  toplam dört kolon  ekleyeceğiz
        
MyData.Columns.Add(New  DataColumn("Baslik")) 
        
MyData.Columns.Add(New  DataColumn("Açıklama")) 
        
MyData.Columns.Add(New  DataColumn("Görünen  URL")) 
        
MyData.Columns.Add(New  DataColumn("URL")) 
Yukarıdaki kodlar ile MyData adında bir tablo yaratarak içerisine dört adet kolon ekliyorum. Bu kolonlardaki verileri yeri geldiğinde arama motorundan dönen sonuçlar ile dolduracağım. Live Search arama motorundan çok detaylı sonuçlar geliyor, isterseniz siz daha farklı kolonlar koyarak daha fazla veri alabilirsiniz. Benim için bu kadarı yeterli
PHP- Kodu:
 'Arama  motorumuzu  tanımlıyoruz. 
        Dim MySearchEngine As New MSNSearchService 
        '
Arama  talbeni değişkenimizi  yaratıyoruz
        
Dim MySearchRequest As New SearchRequest 
MySearchRequest.AppID = "Aldığınız AppID buraya yazılacak."
Kodumuzun bu bölümünde arama servisimizi tanımlıyor sonra da arama talebimize ait ana değişkenimizi tanımlayarak AppID'mizi atıyoruz. AppID olarak yukarıda bahsettiğimiz Live web sitesinden almış olduğunuz kendi AppID değerini yazmanız gerekiyor.
PHP- Kodu:
 'Aranacak  kaynaklar için  talep oluşturuyoruz. 
        Dim  MySourceRequest(0) As SourceRequest 
        MySourceRequest(0) = New  SourceRequest 
        '
Kaç adet  sonuç döneceğini  fonksiyondan gelen parametre belirliyor
        
MySourceRequest(0).Count Adet 
        
'Sadece web  ortamını  arayacağız. 
        MySourceRequest(0).Source =  SourceType.Web 
        '
Sonuçlardaki  tüm bilgileri  ve kolonları alıyoruz
        
MySourceRequest(0).ResultFields =   ResultFieldMask.All 
        
'Arama  sorgumuzu aktarıyoruz. 
        MySearchRequest.Query =  SorguYarat(Aranan) 
        '
Talebimizi  talep listesine  ekleyelim
        
MySearchRequest.Requests =   MySourceRequest 
        Aşağıdaki  kültür bilgisini  isterseniz değiştirebilirsiniz

        
MySearchRequest.CultureInfo "tr-TR" 
Bu bölüm biraz karışık gibi gözükebilir. Benim tavsiyem kod içerisine yazdığım yorum satırlarını okuyarak ilerlemeniz. Önemli birkaç nokta var. Bunlardan ilki MySourceRequest(0).Count = Adet tanımlamasında yatıyor. Buraya verdiğimiz Adet değişkeni bizim fonksiyonumuza parametre olarak verilen bir değişken olacak. Kabaca aradığımız bilgiye dair kaç adet sonuç almak istediğimizi aktarıyoruz. Bir sonraki satırda web içeriği aradığımızı özellikle belirtmemiz gerekiyor, malum Live Search ile resim gibi farklı içerikler aratmak da mümkün. ResultFields satırına geldiğimizde ise sonuçlara dair tüm bilgileri istediğimizi belirtiyoruz. Belki bu noktada biraz optimizasyona gidilerek kullanmayacağımız bilgileri istemeyebilirdik. Query özelliğine geldiğimizde ise daha önce yaratmış olduğumuz SorguYarat fonksiyonunu çalıştırarak sorgumuzu aramaya aktarıyoruz. Bu yapıda aslında istersek birden çok arama yaratarak bir talep listesi olarak topluca web servisine gönderebiliriz. Bizim örneğimizde aramaları tek tek göndereceğiz. En son satırda da arama yaptıracağımız dilin kültür bilgisini aktarıyoruz.
PHP- Kodu:
  'Sıra geldi  sonuçları  almaya. 
        Dim MySearchResponse  As New  SearchResponse 
        '
Aramamızı  gönderip sonuçları  alıyoruz
MySearchResponse = MySearchEngine.Search(MySearchRequest)
Artık sıra geldi aramayı motora aktarmaya ve sonuçları almaya. Bir sonuç değişkeni tanımlayarak önceden tanımladığımız arama motoru değişkenimiz ile taleplerimizi XML web servisine gönderiyoruz.
PHP- Kodu:
'Sonuçlar  arasında gezerek  kendi tablomuza aktaracağız. 
        For Each IncResponse As  SourceResponse In MySearchResponse.Responses 
            Dim MyResults() As Result 
            MyResults = IncResponse.Results 
  
            Dim ResultRow As DataRow 
            '
Sonuç  sayısı  sıfırdan yüksekse aktarmayı başlatalım
            If  
IncResponse.Total 0 Then 
                
For Each MyResult As  Result In MyResults 
                    ResultRow 
MyData.NewRow 
                    
'Tek  tek  gelen bilgileri kendi yarattığımız 
                    '
tablomuza   döngü içerisinde satır satır ekliyoruz
                    
ResultRow.Item(0) = MyResult.Title 
                    ResultRow
.Item(1) =  MyResult.Description 
                    ResultRow
.Item(2) =  MyResult.DisplayUrl 
                    ResultRow
.Item(3) =  MyResult.Url 
                    MyData
.Rows.Add(ResultRow
                
Next 
            End 
If 
        
Next 
Gelen sonuçlar arasında bir For Each döngüsü ile dolaşırken bir yandan da sonuçlardaki bilgileri kendi yarattığımız tablomuza satır satır ekliyoruz. Tüm bu işlemler tamamlandıktan sonra fonksiyonumuz tablomuzu geri döndürüyor olacak. Fonksiyonumuz tam kodu aşağıdaki şekilde sonuçlanıyor.
PHP- Kodu:
Function Ara(ByVal Aranan As  StringByVal  Adet As Integer)  As DataTable 
        
'Verileri  depolayacağımız  sana tablomuzu oluşturuyoruz. 
        Dim MyData As New  DataTable("Sonuclar") 
        '
Tablomuza  toplam dört  kolon ekleyeceğiz
        
MyData.Columns.Add(New  DataColumn("Baslik")) 
        
MyData.Columns.Add(New  DataColumn("Açıklama")) 
        
MyData.Columns.Add(New  DataColumn("Görünen  URL")) 
        
MyData.Columns.Add(New  DataColumn("URL")) 
  
        
'Arama  motorumuzu  tanımlıyoruz. 
        Dim MySearchEngine As New  MSNSearchService 
        '
Arama  talbeni  değişkenimizi yaratıyoruz
        
Dim MySearchRequest As New  SearchRequest 
        MySearchRequest
.AppID "Aldığınız AppID buraya yazılacak."
  
        'Aranacak  kaynaklar için  talep oluşturuyoruz. 
        Dim  MySourceRequest(0) As SourceRequest 
        MySourceRequest(0) = New  SourceRequest 
        '
Kaç adet  sonuç  döneceğini fonksiyondan gelen parametre belirliyor
        
MySourceRequest(0).Count Adet 
        
'Sadece web  ortamını  arayacağız. 
        MySourceRequest(0).Source = SourceType.Web 
        '
Sonuçlardaki  tüm  bilgileri ve kolonları alıyoruz
        
MySourceRequest(0).ResultFields =  ResultFieldMask.All 
        
'Arama  sorgumuzu  aktarıyoruz. 
        MySearchRequest.Query =  SorguYarat(Aranan) 
        '
Talebimizi  talep listesine  ekleyelim
        
MySearchRequest.Requests =  MySourceRequest 
        
'Aşağıdaki  kültür  bilgisini isterseniz değiştirebilirsiniz. 
        MySearchRequest.CultureInfo = "en-US" 
  
        '
Sıra geldi  sonuçları  almaya
        
Dim MySearchResponse  As New  SearchResponse 
        
'Aramamızı  gönderip  sonuçları alıyoruz. 
        MySearchResponse =   MySearchEngine.Search(MySearchRequest) 
  
        '
Sonuçlar  arasında  gezerek kendi tablomuza aktaracağız
        For 
Each IncResponse As  SourceResponse In  MySearchResponse.Responses 
            Dim MyResults
() As Result 
            MyResults 
IncResponse.Results 
  
            Dim ResultRow 
As DataRow 
            
'Sonuç  sayısı  sıfırdan yüksekse aktarmayı başlatalım. 
            If  IncResponse.Total > 0 Then 
                For Each MyResult As  Result In MyResults 
                    ResultRow = MyData.NewRow 
                    '
Tek  tek  gelen bilgileri kendi yarattığımız 
                    
'tablomuza   döngü içerisinde satır satır ekliyoruz. 
                    ResultRow.Item(0) = MyResult.Title 
                    ResultRow.Item(1) =  MyResult.Description 
                    ResultRow.Item(2) =  MyResult.DisplayUrl 
                    ResultRow.Item(3) =  MyResult.Url 
                    MyData.Rows.Add(ResultRow) 
                Next 
            End If 
        Next 
        '
Tablomuzu  geri  döndürüyoruz
        Return 
MyData 
    End 
Function 
Aslında Live Search arama motoru ile ilgili işlemlerimiz tamamlandı. İsterseniz gelin şimdi hızlı bir şekilde yarattığımız fonksiyonu kullanmak üzere bir web sayfası hazırlayalım. Sayfamıza tasarım endişesi olmadan bir metin kutusu, arama işlemini başlatacak bir düğme ve bir de arama sonuçlarını hemen gösterecek GridView ekleyeceğiz. Tüm bunları bir UpdatePanel içerisine ekleyerek tüm sayfada AJAX kullanacağız. Profesyonel çalışmalarda benim tavsiyem arama sonuçlarını göstermek için GridView yerine güzel tasarlanmış bir Repeater kullanmanız ve tüm sayfayı kapsayacak UpdatePanel'lerden olabildiğince kaçmanız. Performans açısından pek anlamlı bir çözüm değil. Biz konumuza dönelim ve hemen uygulamaya geçelim.
PHP- Kodu:
<%@ Page Language="VBAutoEventWireup="true" CodeFile="Default.aspx.vbInherits="_Default" %> 
  
<!
DOCTYPE html PUBLIC "-//W3C//DTD  XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
<
html xmlns="http://www.w3.org/1999/xhtml"
<
head runat="server"
  <
title>Untitled   Page</title
</
head
<
body
  <
form id="form1" runat="server"
    <
asp:ScriptManager ID="ScriptManager1"  runat="server"  /> 
    <
div
      <
asp:UpdatePanel ID="UpdatePanel1" runat="server"
        <
ContentTemplate
          <
asp:TextBox ID="TextBox1" runat="server"></asp:TextBox
          <
asp:Button ID="Button1" runat="server"  Text="Ara"  OnClick="Button1_Click"  /><br /> 
          <
asp:GridView ID="GridView1" runat="server"
          </
asp:GridView
        </
ContentTemplate
      </
asp:UpdatePanel
    </
div
  </
form
</
body
</
html
Sayfamızın HTML kodu yukarıdaki şekilde olacak. Sunucu tarafındaki kodumuza baktığımızda ise hazırladığımız fonksiyonlar sayesinde aslında arama işleminin ne kadar kolaylaştığını görüyor olacaksınız.
PHP- Kodu:
Protected Sub Button1_Click(ByVal  sender As Object,  ByVal e As  System.EventArgs
        
GridView1.DataSource =  Ara(TextBox1.Text,  10
        
GridView1.DataBind() 
    
End Sub
Gördüğünüz gibi yaptığımız tek şey hazırladığımzı Ara fonksiyonuna aranacak metni ve kaç tane sonuç istediğimizi parametre olarak vermek. Fonksiyon geriye bir DataTable döndüreceği için direk GridView'a bağlayabiliyoruz.
Projemizin code-behind sayfasında kodların tamamı aşağıdaki şekilde sonlanıyor.
PHP- Kodu:
Imports System.Data 
Imports com
.msn.search.soap 
  
Partial 
Class _Default 
    Inherits  System
.Web.UI.Page 
  
    
Function SorguYarat(ByVal Aranan) As  String 
        Dim Writer 
As New  System.Text.StringBuilder 
        Writer
.Append(Aranan
        
Writer.Append("   ("
        
Writer.Append("site:"
        
Writer.Append("yazgelistir.com"
        
Writer.Append("   OR "
        
Writer.Append("site:"
        
Writer.Append("nedirtv.com"
        
Writer.Append("   OR "
        
Writer.Append("site:"
        
Writer.Append("microsoft.com.tr"
        
Writer.Append(")"
        Return  
Writer.ToString 
    End 
Function 
  
    Function 
Ara(ByVal Aranan As  StringByVal  Adet As Integer)  As DataTable
        Dim MyData 
As New  DataTable("Sonuclar")
        
MyData.Columns.Add(New  DataColumn("Baslik")) 
        
MyData.Columns.Add(New  DataColumn("Açıklama")) 
        
MyData.Columns.Add(New  DataColumn("Görünen  URL")) 
        
MyData.Columns.Add(New  DataColumn("URL")) 
 
        
Dim MySearchEngine As New  MSNSearchService
        Dim MySearchRequest 
As New  SearchRequest 
        MySearchRequest
.AppID "Aldığınız AppID buraya yazılacak."
 
        
Dim MySourceRequest(0) As SourceRequest 
        MySourceRequest
(0) = New  SourceRequest
        MySourceRequest
(0).Count Adet
        MySourceRequest
(0).Source SourceType.Web
        MySourceRequest
(0).ResultFields =  ResultFieldMask.All
        MySearchRequest
.Query =  SorguYarat(Aranan)
        
MySearchRequest.Requests =  MySourceRequest
        MySearchRequest
.CultureInfo "en-US" 
 
        
Dim MySearchResponse As New  SearchResponse
        MySearchResponse 
=  MySearchEngine.Search(MySearchRequest
 
        For 
Each IncResponse As  SourceResponse In  MySearchResponse.Responses 
            Dim MyResults
() As Result 
            MyResults 
IncResponse.Results 
  
            Dim ResultRow 
As DataRow
            
If IncResponse.Total  0 Then 
                
For Each MyResult As  Result In MyResults 
                    ResultRow 
MyData.NewRow
                    ResultRow
.Item(0) = MyResult.Title 
                    ResultRow
.Item(1) =  MyResult.Description 
                    ResultRow
.Item(2) =  MyResult.DisplayUrl 
                    ResultRow
.Item(3) =  MyResult.Url 
                    MyData
.Rows.Add(ResultRow
                
Next 
            End 
If 
        
Next
        
Return MyData 
    End 
Function
  
    Protected 
Sub Button1_Click(ByVal  sender As Object,  ByVal e As  System.EventArgs
        
GridView1.DataSource =  Ara(TextBox1.Text10
        
GridView1.DataBind() 
    
End Sub 
End 
Class 
Hepinize kolay gelsin.
Ceybi isimli Üye şuanda  online konumundadır   Alıntı ile Cevapla

Sponsor Linkler (Lütfen Sitemize Destek Olmak İçin Günde Bir Kez Tıklayınız)
Cevapla

Paylaş

Etiketler
arama, kendi, kendi arama motorunuzu, kullanarak, live, live search xml web, motorunuzu, search, servisleri'ni kullanarak, servislerini, web, xml, yaratin, yaratın

Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Açan Forum Cevap Son Mesaj
Zoint Search Engine Optimization(TR) 2.2.2 Ceybi Eklentiler (Hack-Plugins) 0 29 Ocak 2012 19:57
ASP.net ile Connection Nesnesini Kullanarak Sql Server'a Bağlanma Ceybi ASP-.NET 0 28 Ocak 2012 03:07


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 13:16.


"İnsanları da Kağıt Paralar Gibi Güneş'e Tutunuz, İçlerinde Atatürk Yoksa Sahtedirler ..."
Sitemiz bir forum sitesi olduğu için kullanıcılar paylaşımlarını önceden onay almadan anında siteye yazabilmektedir. Bu yazılardan dolayı doğabilecek her türlü sorumluluk yazan kullanıcılara aittir. Yinede sitemizde yasalara aykırı unsurlar bulursanız admin[at]sanalgucluler[dot]com iletisim adresine bildirebilirsiniz, şikayetiniz incelenip en kısa sürede gereken yapılır.
Alemin Kralı, Alexa, Altavista, Android, Android, Apple ios, Apple Iphone, ASP-.NET, Astroloji, Bada, Blackberry, Blackberry Os, C#, C/C++, Çin Malı Telefonlar, Counter Strike, CSS, Delphi, DMOZ, Eklentiler (Hack-Plugins), Ekonomi, Fatmagül’ün Suçu Ne?, Firar, Google Adsense, Google Adwords, Google Analytics, Google Pagerank, Google Translate, Güvenlik Programları, Hayat Devam Ediyor, HTC, HTML-XHTML, Java, JavaScript & AJAX, Kamera Şakaları, Karahan Online, Kaza Videoları, Knight OnLine, Komik Videolar, Kurtlar Vadisi Pusu, Kuzey Güney, Kültür Sanat, Linux, MAC-OS, Maemo, Magazin, Metin2, Mobil, Moderatör Başvuruları, Motorola, Muck, Muhteşem Yüzyıl, Nokia, Ogame, Palm Os, Pardus, PHP, Pis Yedili, Planet, Python, Sağlık, Samsung, Ses&Video Programları, Siemens, Silkroad Online, Sinema, Sonyericsson, Sorularınız ve Cevapları, Spor, Symbian, Sürücü&Driver, Tasarım Programları, Teknoloji, Travian, Tv Rehberi, Unix, vBulletin Temaları, Visual Basic, Windows, Windows Mobile, WolfTeam, World of Warcraft, WPF/WCF, XML/XSLT, Yahoo, Yalan Dünya, Yer Gök Aşk, İlginç Videolar, İnternet Programları, İstanbul Kıyamet Vakti, Öyle Bir Geçer Zamanki
I Love You Google

Search Engine Optimization by vBSEO 3.6.0