ماورای طبیعت Close
تبلیغات در بلاگ اسکای
پنجشنبه 22 دی ماه سال 1384
قرار دادن جستجو با استفاده از وب سرویس گوگل - قسمت اول حتما تست

معرفی

آیا می دانید گوگل  برای جستجو در دیتابیس خود، دریافت نسخه cache شده یک وب سایت و همچنین استفاده از سرویس spelling check یک وب سرویس فراهم کرده است؟ استفاده از وب سرویس گوگل می تواند جستجوی گوگل را برای سایت شما فراهم کند. در اولین بخش این مقاله، ما به چگونگی استفاده از این وب سرویس برای جستجو در دیتابیس گوگل خواهیم پرداخت.

API وب سرویس گوگل

اطلاعات وب سرویس گوگل را می توانید در آدرس http://www.google.com/apis/ پیدا کنید. برای شروع استفاده از وب سرویس گوگل شما باید Google Web API Developer's Kit را دانلود کنید. این فایل 666 کیلو بایتی شامل فایل WSDL ( زبان توصیف وب سرویس) است که کاملا وب سرویس را توصیف می کند و نیز مثال هایی جهت دسترسی به این وب سرویس با زبان های جاوا، ویژوال بیسیک و سی شارپ دات نت دارد.

بعد از دانلود API Developer's Kit، شما باید یک اکانت در گوگل بسازید، این کار را می توانید از طریق آدرس زیر انجام دهید.https://www.google.com/accounts/NewAccount?continue=http://api.google.com/createkey&followup=http://api.google.com/createkey .
بعد از اینکه یکی از این اکانت های مجانی را ساختید. شما باید یک کلید لایسنس یکتا تعیین کنید. این کلید لایسنس باید هر دفعه که شما وب سرویس گوگل را فرامی خوانید استفاده شود. هدف این مجوز، محدود کردن درخواست وب سرویس ها به 1000 عدد در روز به ازای هر کلید لایسنس است.

ساختن کلاس پراکسی

بعد از اینکه کلید مجوز و کیت توسعه دهندگان را دریافت کردید، قدم بعدی ساخت یک کلاس پراکسی برای فراخوانی وب سرویس است. برای انجام این کار ما ابتدا به دستکاری در فایل WSDL نیاز داریم، این یک فایل به فرمت XML است که سرویس ارائه شده توسط وب سرویس گوگل را توصیف می کند. این فایل WSDL ، GoogleSearch.wsdl در کیت توسعه دهندگان مشخص شده است.

اگر از ویژوال استودیو دات نت استفاده می کنید، این فایل را در یک دایرکتوری ASP.NET ( مثلا C:InetpubwwwrootWebApplication1 ) کپی کنید. سپس در ویژوال استودیو به منوی Project بروید و گزینه Add Web Reference  را انتخاب کنید. سپس در جعبه محاوره، آدرس فایل WSDL را وارد کنید، که چیزی شبیه به http://localhost/WebApplication1/GoogleSearch.wsdl خواهد بود . برای تکمیل عملیات روی دکمه Add Reference  کلیک کنید. این کار یک کلاس پراکسی  با استفاده از فضا نام localhost می سازد ( که در صورت تمایل می توانید آن را تغییر دهید).

اگر ویژوال استودیو دات نت ندارید، می توانید از طریق برنامه خط فرمان به نام wsdl.exe یک کلاس پراکسی بسازید. wsdl.exe یک فایل سی شارپ یا VB.NET می سازد که شما پس از آن احتیاج به کامپایل خواهید داشت. برای اجرای wsdl.exe در خط فرمان دستور زیر را وارد کنید:


wsdl /protocol:SOAP /namespace:google /out:GoogleProxy.cs C:googleGoogleSearch.wsdl


این کار یک فایل سی شارپ به نام GoogleProxy.cs  با فضا نام google می سازد. برای کامپایل این کلاس از کامپایلر خط فرمانی سی شارپ یعنی csc به صورت زیر استفاده کنید:

csc /t:library /out:GoogleProxy.dll GoogleProxy.cs 


این کار برای شما یک فایل به نام GoogleProxy.dll می سازد . مطمئن شوید که یک کپی از این فایل در دایرکتوری bin برنامه وبی شما باشد!

ساخت یک صفحه وبی ASP.NET برای فراخوانی وب سرویس گوگل

حالا که کلاس پراکسی را ساخته ایم، فراخوانی وب سرویس گوگل از طریق یک صفحه وب کار آسانی است. قبل از امتحان کردن این کار باید پارامترهایی که متدهای وب سرویس انتظارشان را دارند بشناسیم. خوشبختانه این متدها و پارامترهای ورودی شان در بخش مرجع در وب سایت گوگل کاملا معرفی شده اند. چون در این مقاله ما روی استفاده از متدهای جستجو تمرکز کرده ایم اجازه بدهید تا پارامتر های متد doGoogleSearch را با هم بررسی کنیم. این متد 10 پارامتر ورودی دارد:

نام
توضیح
key
بوسیله گوگل فراهم شده است، این کلید برای شما لازم است تا به سرویس وب گوگل دسترسی داشته باشید، گوگل این کلید را برای احراز هویت و ثبت استفاده می کند.
q
بخش اصطلاحات پرس و جو را برای اطلاعات بیشتر در مورد گرامر کوئری ببینید
start
یک شاخص Zero-based از اولین نتیاج دلخواه
maxResults
تعداد نتایج دلخواه برای هر پرس وجو، بیشترین مقدار برای هر پرس و جو 10 تاست. توجه : اگر شما پرس و جویی را انجام دهید که نتایج زیادی ندارد، مقدار واقعی نتایجی که دریافت می کنید ممکن است کمتر از آن چیزی باشد که درخواست کرده اید.
filter
فعال یا غیرفعال کردن فیلتراتوماتیک نتایج، که نتایج بسیار شبیه به هم یا نتایجی که همگی از یک وب هوست آمده اند را مخفی می کند. برای اطلاعات بیشتر بخش فیلترینگ اتوماتیک را ببینید.
restricts
محدود کردن جستجو به یک زیر مجموعه شاخص های وب گوگل، به عنوان مثال محدود کردن به کشوری مثل اوکراین یا موضوعی مثل لینوکس . برای اطلاعات بیشتر بخش محدود کردن را ببینید.
safeSearch
یک مقدار بول که مشخص که فیلتر محتوای بالای 18 سال را در نتایج جستجو فعال می کند. بخش جستجوی امن را برای کسب اطلاعات بیشتر ببینید.
lr
محدود کردن زبان - محدود کردن جستجو در میان اسناد یک یا چند زبان خاص
ie
Input Encoding -  تمام درخواست ها به API باید بوسیله UTF-8 باشد. برای اطلاعات بیشتر بخش انکودینگ ورودی و خروجی را ببینید.
oe
Output Encoding - تمام درخواست ها به API باید بوسیله UTF-8 باشد. برای اطلاعات بیشتر بخش انکودینگ ورودی و خروجی را ببینید.

متد doGoogleSearch نمونه ای از شی GoogleSearchResult  را برمی گرداند. این شی یک مشخصه به نام resultElements دارد که آرایه ای از اشیا موسوم به ResultElement می باشد. شی ResultElement تعدادی مشخصه دارد، مثل عنوان، آدرس، خلاصه و چیزهایی از این دست.

حالا اجازه بدهید که یک صفحه ASP.NET ساده بسازیم تا 10 نتیجه اول را برای پرس و جوی عبارت "ASP" برگرداند. این کار را به کمک کد زیر می توان انجام داد:

<script language="VB" runat="server">
  Sub Page_Load(sender as Object, e as EventArgs)
    Dim search As google.GoogleSearchService = New google.GoogleSearchService()
    Dim result as google.GoogleSearchResult
      
    result = search.doGoogleSearch("license key...", "ASP", _
                              0, 10, True, "", True, "", "", "")
      
    dlResults.DataSource = result.resultElements
    dlResults.DataBind()
  End Sub
</script>

<asp:DataList runat="server" id="dlResults"
      Font-Name="Verdana" Font-Size="10pt">
  <ItemTemplate>
    <span style="font-size:15pt;font-weight:bold;">
      <%# Container.DataItem.title %>
    </span><br />
    <%# Container.DataItem.summary %><br />
    [<a href="<%# Container.DataItem.URL %>">
        <%# Container.DataItem.URL %>
     </a>]
  </ItemTemplate>
  
  <SeparatorTemplate>
    <p>آ </p>
  </SeparatorTemplate>
</asp:DataList>

در متن ضخیم (Bold) کد لازم برای فراخوانی متد doGoogleSearch در وب سرویس گوگل نشان داده شده است. نتایج جستجو در یک دیتالیست به نمایش درخواهند آمد، به همراه هر نتیجه، عنوان، خلاصه و آدرس دسترسی به آن صفحه نمایش داده می شود.

در قسمت دوم این مقاله خواهیم دید که چگونه یک صفحه ASP.NET مفیدتر که از وب سرویس گوگل استفاده می کند بنویسیم.