Google API`si ile özelleştirilmiş arama

Google API si ile özelleştirilmiş arama

Google destekli aramalarda kullanacağınız bir uygulama göstermek istiyorum.

Websitelerimizde sıklıkla kullandığımız özelliklerden birisi de site içi aramadır.

Bunun için son zamanlarda pekçok site Google'un sunduğu ücretsiz hizmetlerden faydalanmaktadır.

Bu yazımızda da kendi sitemiz kendi kodlarımızla arama yapıp ekrana istediğimiz gibi sunmayı göstermek istiyorum.

Öncelikle "Google APIs for .NET Framework" sayfasını ziyaret edip DLL'nin son sürümünü indirmeniz gerekiyor.

DLL'i indirdikten ve projemize "Add Reference" tan tanıttıktan sonra sayfamıza önce bunu en üste using ile ekleyelim.

using Google.API.Search;

Önce basit bir web taramasının nasıl yapılabileceğini görelim:

ASPX sayfamıza bir DataList ekleyelim:

<asp:DataList ID="dlSonuc" runat="server">
<ItemTemplate>
<asp:HyperLink ID="hl" runat="server" Font-Bold="true" Text='<%#Eval("Title") %>'
NavigateUrl='<%#Eval("Url") %>' />
<br />
<asp:Label ID="lbl" runat="server" Text='<%#Eval("Content") %>' />
</ItemTemplate>
<SeparatorTemplate>
<hr />
</SeparatorTemplate>
</asp:DataList>

Sonra da code behind tarafına geçip arama kodlarımızı yazalım:

// http refere headerimizi ekliyoruz
GwebSearchClient client = new GwebSearchClient("http://www.daltinkurt.com");
// arama metnimizi ve kaç sonuç döndüreceğimizi belirtiyoruz

var sonuclar = client.Search(@"arama metni", 10);
dlSonuc.DataSource = sonuclar;
dlSonuc.DataBind();

Bu basit bir aramaydı, istersek arama detaylarını çeşitlendirebiliriz:

GwebSearchClient Client = new GwebSearchClient(@"http://www.daltinkurt.com");
string keyword = "eğitim öğretim";
int count = 10;
// sitemize ait özel Search Id miz

string customSearchId = "014843064322072671669:xxxxxxxx";
string customSearchReference = null;
string language = "Turkish";
string safeLevel = "Off";
string duplicateFilter = "On";

var sonuclar = Client.Search(keyword, count, customSearchId, customSearchReference, safeLevel, language, duplicateFilter);
dlSonuc.DataSource = sonuclar;
dlSonuc.DataBind();

Gördüğünüz gibi son derece kolay bir şekilde Google Search API'sini kullanabildik.

Dilerseniz, Google'daki gibi aramalarımızı videolar, resimler, vs. olarak da yapabiliriz. Bunun için GwebSearchClient yerine aşağıdaki tabloda yer alan sınıfları kullanmamız yeterli.

Arama Tipi Sınıf Dönen Değer Tipi
Web GwebSearchClient IList<IWebResult>
Local GlocalSearchClient IList<ILocalResult>
Video GvideoSearchClient IList<IVideoResult>
Blog GblogSearchClient IList<IBlogResult>
News GnewsSearchClient IList<INewsResult>
Book GbookSearchClient IList<IBookResult>
Image GimageSearchClient IList<IImageResult>
Patent GpatentSearchClient IList<IPatentResult>

Bu kodları illa bir web sayfasında kullanmak zorunda değilsiniz. Console uygulamasında bile bu kodlar çalışır:

GwebSearchClient client = new GwebSearchClient("http://www.daltinkurt.com");
IList<IWebResult> results = client.Search(@"arama metni", 20);
foreach (IWebResult result in results)
{
Console.WriteLine("[{0}]\n{1}\n{2}\n\n{3}", 
  result.Title, 
  result.Url,
  result.VisibleUrl,
  result.Content);
Console.WriteLine("------------------");
}

Bu arada bir hususu daha belirtmek istiyorum:

Arama sonuçları gördüğünüz gibi IList<IWebResult> tipi döndürüyor. IWebResult ı incelediğimizde içinde başka bilgileri de barındırdığını görebilirsiniz:

public interface IWebResult
{
string CacheUrl { get; }
string Content { get; }
string Title { get; }
string Url { get; }
string VisibleUrl { get; }
}

Bir de IImageResult'ı inceleyelim:

public interface IImageResult
{
string Content { get; }
int Height { get; }
string ImageId { get; }
string OriginalContextUrl { get; }
ITbImage TbImage { get; }
string Title { get; }
string Url { get; }
string VisibleUrl { get; }
int Width { get; }
}

Not: Resmin url si TbImage içerisindedir.

Herkese iyi aramalar :)