- 浏览: 1525208 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (525)
- SEO (16)
- JAVA-EE-Hibernate (6)
- JAVA-EE-Struts (29)
- JAVA-EE-Spring (15)
- Linux (37)
- JAVA-SE (29)
- NetWork (1)
- CMS (14)
- Semantic Research (3)
- RIA-Flex (0)
- Ajax-Extjs (4)
- Ajax-Jquery (1)
- www.godaddy.com (0)
- SSH (34)
- JavaScript (6)
- SoftwareEngineer (9)
- CMMI (0)
- IDE-Myeclipse (3)
- PHP (1)
- Algorithm (3)
- C/C++ (18)
- Concept&Items (2)
- Useful WebSite (1)
- ApacheServer (2)
- CodeReading (1)
- Socket (2)
- UML (10)
- PowerDesigner (1)
- Repository (19)
- MySQL (3)
- SqlServer (0)
- Society (1)
- Tomcat (7)
- WebService (5)
- JBoss (1)
- FCKeditor (1)
- PS/DW/CD/FW (0)
- DesignPattern (11)
- WebSite_Security (1)
- WordPress (5)
- WebConstruction (3)
- XML|XSD (7)
- Android (0)
- Project-In-Action (9)
- DatabaseDesign (3)
- taglib (7)
- DIV+CSS (10)
- Silverlight (52)
- JSON (7)
- VC++ (8)
- C# (8)
- LINQ (1)
- WCF&SOA (5)
- .NET (20)
- SOA (1)
- Mashup (2)
- RegEx (6)
- Psychology (5)
- Stock (1)
- Google (2)
- Interview (4)
- HTML5 (1)
- Marketing (4)
- Vaadin (2)
- Agile (2)
- Apache-common (6)
- ANTLR (0)
- REST (1)
- HtmlAnalysis (18)
- csv-export (3)
- Nucth (3)
- Xpath (1)
- Velocity (6)
- ASP.NET (9)
- Product (2)
- CSS (1)
最新评论
-
lt26w:
理解成门面模式应该比较容易明白吧
FacadePattern-Java代码实例讲解 -
lt26w:
看下面的例子比较明白.
FacadePattern-Java代码实例讲解 -
javaloverkehui:
这也叫文档,别逗我行吗,也就自己看看。
HtmlCleaner API -
SE_XiaoFeng:
至少也应该写个注释吧。
HtmlCleaner API -
jfzshandong:
...
org.springframework.web.filter.CharacterEncodingFilter 配置
http://www.codeproject.com/KB/cs/BingSearch.aspx
Table of Contents
- Introduction
- Features
- How to use Bing API on your Application
- Source Types
- JSON Based Approach
- XML Based Approach
- SOAP based Approach
- Reference
- Points of Interest
- History
Introduction
Internet is the world where everyone of us rely so heavily in todays world. Internet is one of the most important part of our lives. The heart of Internet lies in the Search Engines. Most of us use Internet just to gather knowledge about the unknown. To grab knowledge we use Search Engine. Search Engines uses Web Crawl feature to gather informations from various Websites and fetch those to us. The First word that comes to all of us when Internet Comes into mind is Google. Google is the most famous search engine that keeps almost all answers that a person can ever think of.
Micorosoft also has search engines but they could never compete with
Google's Excellence. Thus for the last few decades Google is the
primary search engine for the whole world, until this year when
Microsoft First Introduced Bing. Bing is a Smart search engine which
gathers everything just like the crawlers do, but it orders the most
appropriate items first so that the user needs much lesser time to
gather the most valuable info he needs. You will find all the features
that Bing introduces recently from the link below:
Important Features of Bing
[^
]
Bing also introduces a superior service for developers. It encourages developers to use their Search API into their own application. I am going to discuss the Bing Search API here in this article. The Article includes one Sample application, but as I am a newbie in WPF, I have made it most simple.
Features
Bing API gives features to the the developers to build application that enables to:
- Retrieve Valuable Information from the Search engine when needed.
- Get instant answers to questions
- Retrieve telephone numbers for the users.
- Monetize applications with advertisements.
- Add Instant News Articles and much more
How to use Bing API on your Application
Bing API gives you the opportunity to use 3 types of protocol for your Request :
- JSON based Approach
- XML based Approach
- SOAP based approach
These protocols could be used to retrieve informations from the servers. But before you do you need to register by creating new ApplicationID to use Bing services. To do this Follow the steps :
- Open your browser, point to Bing Developer Center
- After you move to the page, follow the link sign in below the page as shown below.
- Sign in using your live id. (You need to create a new one if you dont have it already)
- Now register your application key by filling up the form as in the figure.
- Finally you will see the Key registred by you in the list
The key is to be used on every request to the service to work that correctly. Now I am going to discuss each of the protocol one by one, while our primary concern is building application using SOAP. I will give few basic examples on others too to get you bit familiar with them.
Source Types
There are lots of Source Types available with Bing. Let us take a look of each of them:
WEB
|
This sourcetype searches the query string and gets you the list of avalable crawn result based on its inbuilt automation ranking algorithm. This represents the basic search algorithm for Bing Services |
IMAGE
|
Returns the list of images relevant to the query. |
VIDEO
|
Returns List of video result for the searched query |
AD
|
Returns Advertisement links relevant to the query |
NEWS
|
News based entries for the current query based on location passed if any. |
RELATEDSEARCH
|
A unique feature that enables the Bing service to automatically determine the searches that are relevant to the current searches and display the result. |
SPELL
|
Spell Feature enables to automaticaly determine correct spellings of the word passed in the query from its database. |
TRANSLATE
|
It translates three sentences or less passed to the bing service from one language to another based on specified Target Language ID. |
INSTANTANSWER
|
This is another unique feature to enable you to get Instant answers from your current query. It gives authoratitive answers to your questions |
PHONEBOOK
|
Just on your imagination, it searches phone numbers. This is another great feature of Bing Services. |
MOBILEWEB
|
Returns shrink output for mobile browsers. |
Based on these source types you can generate your particular output. The results might start from a normal search option to even Translate between two different languages for your application.
JSON Based Approach
JSON(Javascript Object Notation) based approach is the most simplified approach of all where the request to the server is made only using its appropriate url. We create a string with ApplicationId, Search Criteria, Nos of Offset etc and appropriately connect the server. The server will return a JSON string as Response. This approach is useful when we need AJAX based Calls to the server and when there is no option of server side processing.
To invoke a request using JSON approach we connect the server using the following Url :
http://api.search.live.net/json.aspx
It is to be noted each call to the server requires some parameters to be passed :
- Required Attributes Common to every SourceTypes :
- AppId : It is the mandatory field which must be placed on querystring for every request. The value of AppId could be found after Registration of Bing SDK.
- Query : This field indicates the Main Search string for which the result will be produced. This is also Mandatory Field.
- Sources : It indicates where to search for the string specified in Query string. This is also mandatory criteria to produce the Output. The SourceType are generally of many types, It will be discussed in detail in later section.
- Optional Parameters Common to every Source Types:
- Version : This indicates which version of Bing API should be used to generate the search Output. We need to specify 2.0 here as the current version is 2.0. If you need to use any other Version you need to change your program accordingly. This field is optional.
- Market : It is used to specify the Culture which might be used to filter search items. Value should be a valid Culture String (eg. en-Us, fr-Fr, hi-In etc)
- Adult : It indicates how much adult content it should display while searching. The default is Moderated.
- Options : There are options to indicate if Highlighting search string is required. We use EnableHighlighting to ensure that that search string is highlighted in the result. We may also use DisableLocationDetection to disable location based search for current search criteria.
-
SourceType Specific Parameters, SourceType : WEB
- Web.Count : This represents the number of results that is to return when the search is invoked.
- Web.Offset : Specifies the number of results that the result have to skip before selecting the Results. For instance, If we want the starting elements, offset will be passed as 0.
- Web.Options : There are 2 options that we can specify to customize output. DisableHostCollapsing indicates whether the host that is not available should be listed or not. DisableQueryAlterations indicates whether Query would be altered if data is altered in web.
-
SourceType Specific Parameters, SourceType : IMAGE
- Image.Count : Represents Count of Image result that to return
- Image.Offset : The number of images to skip
-
SourceType Specific Parameters, SourceType : AD
- Ad.MlAdCount : Represents number of mainline advertisement that needed to display on single search
- Ad.SbAdCount : Represents sidebar ad count.
- Ad.ChannelId :Channel Identifier for the Advertisement, so that appropriate ad is shown to appropriate application.
-
SourceType Specific Parameters, SourceType : PhoneBook
-
Phonebook.FileType :
This is the type of the file that the no is going to search. It has 2 values
YP(Commercial)
/WP(Residential)
. - Phonebook.SortBy : Ordering of Numbers.
-
Phonebook.FileType :
This is the type of the file that the no is going to search. It has 2 values
-
SourceType Specific Parameters, SourceType : News
- News.LocationOverride : Represents the location for which news article should be placed
- News.Category : Category of News that is to be filtered.
- News.SortBy : Sort by element.
-
SourceType Specific Parameters, SourceType : Translate
- Translation.SourceLanguage : Language code for the Source Language during Translate operation
- Translation.TargetLanguage : Language code for the Target Language during Translate operation
The above are the basic options that we must specify during the process of creating different search types. There are lots more fields other than these you might use. Refer MSDN for the complete list of Options that are available to you.
Therefore our JSON search call would look like :
http://api.bing.net/json.aspx?AppId=YOUR_APPID&Version=2.0&Market=en-US&Query=abhishek+sur&Sources=web+spell&Web.Count=1
If we see the JSON response string, it will look like :
{ " SearchResponse" :{ " Version" :" 2.0" , " Query" :{ " SearchTerms" :" abhishek sur" }, " Web" :{ " Total" :48800 , " Offset" :0 , " Results" :[ {" Title" :" CodeProject: Member Profile: Abhishek Sur. Free source code and ..." , " Description" :" Member Profile: Abhishek Sur - Free source code and tutorials for Software developers and Architects." , " Url" :" http:\/\/www.codeproject.com\/script\/Membership\/View.aspx?mid=4293807" , " DisplayUrl" :" www.codeproject.com\/script\/Membership \/View.aspx?mid=4293807" , " DateTime" :" 2009-10-28T17:49:30Z" }] } } }
Thus we can see If you replace YOUR_APPID
with your appropriate Id and run this url into browser, you will see my Codeproject profile.
Now let us see the complete code :
var qry = ' abhishek sur' ; var src= ' Web' ; function Search() { var requestStr = " http://api.search.live.net/json.aspx?" + " AppId=" + AppId + " &Query=" + qry + " &Sources=" + src + " &Version=2.0" + " &Market=en-us" + " &Adult=Moderate" + " &Web.Count=10" + " &Web.Offset=0" + " &Web.Options=DisableHostCollapsing+DisableQueryAlterations" // JSON-specific request fields (optional) + " &JsonType=callback" + " &JsonCallback=SearchCompleted" ; var requestScript = document.createElement(" script" ); requestScript.type = " text/javascript" ; requestScript.src = requestStr; var head = document.getElementsByTagName(" head" ); head[0 ].appendChild(requestScript); } function SearchCompleted(response) { var errors = response.SearchResponse.Errors; if (errors != null) { // load error.... } else { DisplayResults(response); } } function DisplayResults(response) { var output = document.getElementById(" output" ); var results = response.SearchResponse.Web.Results; var resultList = document.createElement(" ul" ); output.appendChild(resultList); // Display the results header. resultsHeader.innerHTML = " Web results for " + response.SearchResponse.Query.SearchTerms + " Displaying " + (response.SearchResponse.Web.Offset + 1 )+ " to " + (response.SearchResponse.Web.Offset + results.length) + " of " + response.SearchResponse.Web.Total + " results " ; var resultsListItem = null; var resultStr = " " ; for (var i = 0 ; i < results.length; ++i) { resultsListItem = document.createElement(" li" ); resultsList.appendChild(resultsListItem); resultStr = " %5C%22%22" >" + results[i].Title + " " + results[i].Description + " Last Crawled: " + results[i].DateTime + " " ; resultsListItem.innerHTML = resultStr; } }
From this code if you execute, it will create the first 10 list of search result items and show it in a list using Ul / Li.
XML Based Approach
We might use XML based approach to use Bing Service for our application. It generates HTTP GET request to get the XML response for the current query statement. If we are using applications that cannot handle complex SOAP request responses, we might take this an option. Just you need to create an object of WebRequest from your application and use the querystring with result criteria and get the response XML from it.
To invoke XML request we connect the server using this url:
http://api.bing.net/xml.aspx
Now
as I have already mentioned about the basic querystring properties in
JSON based approach section, I am not going to repeat that anymore. Let
us quickly look into how the querystring look like:
http://api.bing.net/xml.aspx?AppId=YOUR_APPID&Version=2.2&Market=en-US&Query=abhishek+sur&Sources=web+spell&Web.Count=1
The response we get from this url if we replace YOUR_APPID with appropriate AppId will be :
<? pageview_candidate ?> < SearchResponse Version =" 2.2" > < Query > < SearchTerms > abhishek sur< / SearchTerms > < / Query > < web:Web > < web:Total > 48800< / web:Total > < web:Offset > 0< / web:Offset > < web:Results > < web:WebResult > < web:Title > CodeProject: Member Profile: Abhishek Sur. Free source code and ... < / web:Title > < web:Description > Member Profile: Abhishek Sur - Free source code and tutorials for Software developers and Architects. < / web:Description > < web:Url > http://www.codeproject.com/script/Membership/View.aspx?mid=4293807 < / web:Url > < web:CacheUrl > http://cc.bingj.com/cache.aspx?q=abhishek+sur &d=4730799138997872&mkt=en-US&w=711d76ec,f208163f < / web:CacheUrl > < web:DisplayUrl > www.codeproject.com/script/Membership/View.aspx?mid=4293807 < / web:DisplayUrl > < web:DateTime > 2009-10-28T17:49:30Z< / web:DateTime > < / web:WebResult > < / web:Results > < / web:Web > < / SearchResponse >
Thus we can parse this WebResponse object easily in any language and show in the application. If you are using .NET you can create
string requestString = " http://api.bing.net/xml.aspx? AppId=YOUR_API&Version=2.2&Market=en-US&Query=abhishek+sur &Sources=web+spell&Web.Count=1" ; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(requestString); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); XmlDocument document = new XmlDocument(); document.Load(response.GetResponseStream()); // Now parse it....
Hope you can do parsing the XmlDocument
yourself. You can also use XDocument
instead of XmlDocument
to make use of LINQ
in the response and also to make
the job much more easier.
SOAP based Approach
This is the most sophisticated approach which eliminates the limitations of making HTTP GET request of XML Protocol and ensures to create SOAP based Request object sent using Post request and the Response recieved using SOAP protocol. The service that runs in the server is basically a WCF service which implements BasicHttpBinding to work similar to normal web services. This approach could be used with advanced technologies like .NET. I am using .NET to demonstrate how to build application.
Steps to Create Your SOAP based .NET application
- Open Visual Studio, and Create a new project. You may choose any project type you want to. In the sample application I used WPF application.
- Add Web Reference to your project. The path that you should use is :
http:// api.search.live.net/search.wsdl?AppID=YOUR_APPID
- Now create an object of
LiveSearchPortTypeClient
which is the basic Endpoint class. Let us look at the code below:Collapsepublic string SearchOutput(string AppId, string query, int offset, int no_of_res) { using (LiveSearchService service = new LiveSearchService()) { try { SearchRequest request = new SearchRequest(); request.AppId = AppId; request.Query = query; request.Sources = new SourceType[] { SourceType.Web }; // You may specify multiple request.Version = " 2.0" ; request.Market = " en-us" ; request.Adult = AdultOption.Moderate; request.AdultSpecified = true ; request.Web = new WebRequest(); request.Web.Count = no_of_res; request.Web.CountSpecified = true ; request.Web.Offset = offset; SearchResponse response = service.Search(request); return GetResponsestring(response); } catch (Exception ex) { return ex.Message; } } }
Here we invoke the Request to the Bing server and get the response. The response object will hold the resultset of the current search. - We can pass
Offset
(which indicates the skip element for current search. 0 means it will show from first), andCount
(Indicates the no of results to be fetched) to get the desired result.
Few properties of Result object that might be helpful
There are quite a few properties that might come very handy while producing the desired search results. Here I am going to discuss about few:
-
WebResult.Title
: Specifies the Title element of the result string. -
WebResult.Description
: In short description of the link produced. -
WebResult.Url
: Url that points to the Current result. -
ImageResult.MediaUrl
: Returns the url to point the full size of image -
ImageResult.ContentType
: This is the Mime type of the image produced in the result -
ImageResult.Thumbnail.Url
: Represents the Url that corresponds to thumbnail size image of the result -
InstantAnswerResult.ClickThroughUrl
: Represents the Bing url that has the Answer to the the query -
NewsResult.BreakingNews
: Identifies if the News is a breaking news or not. 1 indicates "Breaking News" while 0 not. -
TranslationResult.TranslatedTerm
: Returns the Translation string result from the source specified.
In addition to these there are lot more properties which might come to use. You can refere to MSDN link [^ ] to get the description of each of those while creating your application.
Reference
http://msdn.microsoft.com/en-us/library/dd251020.aspx [^ ]
Points of Interest
With this application I have added one sample application. The application is written using WPF. I have just added normal Web search now. I will other SourceType options later on.
Also note that I am a newbie in WPF, so in this version of the sample application, you might not be impressed with Look and feel. I will update that later with more advanced Sample application.
You can find the First version of Sample application from here :
Download SearchAPISample.zip - 200.46 KB
History
Initial Release : 31st November 2009
<!-- Main Page Contents End -->License
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)
About the Author
Abhishek Sur
Member |
The guy is doing programming since 2001. Started his career with
C, then C++ and so on. He completed his Masters in Computers from JIS,
Kolkata. He likes to know the unknown. Now he is doing job as .NET
Developer in a MNC. If you want to add him as buddy... Just click here...
Or Directly Send Messages
To email abhi2434@yahoo.com He is now working in a US Based Company in Kolkata. His WebSite Home page Technical Blog Programming Help and Tricks Hidden Tips on Windows .NET Ideas(My Previous Blog) Most Importantly, He uses Orkut very often add him if you want If you like this, Try reading some more: Articles Listing Description never ends, lots of secret with him. Make him your friend to learn more. Dont forget to vote or share your comments about his Writing Thanks in advance.
|
Other popular C# articles:
-
Asynchronous Method Invocation
How to use .NET to call methods in a non-blocking mode.
-
IconLib - Icons Unfolded (MultiIcon and Windows Vista supported)
Library to manipulate icons and icons libraries with support to create, load, save, import and export icons in ico, icl, dll, exe, cpl and src format. (Windows Vista icons supported).
-
I/O Ports Uncensored - 1 - Controlling LEDs (Light Emiting Diodes) with Parallel Port
Controlling LEDs (Light Emiting Diodes) with Parallel Port
-
100% Reflective Class Diagram Creation Tool
100% Reflective Class Diagram Creation Tool
-
Processing Global Mouse and Keyboard Hooks in C#
This class allows you to tap keyboard and mouse and/or to detect their activity even when an application runs in the background or does not have any user interface at all.
发表评论
-
获取天气预报服务
2010-01-05 16:13 16172008 - 04 - 08 获取天气预 ... -
请问有什么好的天气预报的web service吗?
2010-01-05 15:53 1984请问有什么好的天气预报的web service吗? 楼主 ... -
WebService开发实例 (Xfire+Spring+Hibernate)
2009-12-06 19:34 2664注意,需要下载Xfire1.2.6、spring2.0,hib ... -
JAVA学习提高之-常用的WebServices收藏备用
2009-12-04 18:31 1159天气预报Web服务,数据来源于中国气象局 Endpoint ...
相关推荐
ll progress from .NET programming basics to understanding the full suite of ArcGIS tools and artefacts to customising and building your own commands, tools and extensions?all the way through ...
Building Single Page App using ASP.NET Core and Angular is written in such a way, that while reading you will be building fully functional End-To-End app which you will be starting from basics to ...
Use this quick reference to learn the basics of the Arduino platform for multiple models and start your Arduino programming in .NET and Sketch today. What You'll Learn: Learn the basics of the ...
- 第九章“Constructing and Using the Geometry of Features”专注于要素几何体的构建和使用。 - 第十章“Rendering Geospatial Data and Using Hyperlinks and Map Tips”讲解了地理空间数据的渲染方式、如何使用...
This is a starter guide for those who want to quickly understand the basics of Web API. Topics covered in this book are: Implementing Web API Web API Client Implementations – ASP.NET MVC and jQuery...
The Basics of Cloud Computing
Unlikeother books that promote a specific process and performance improvement discipline, this book shows organizations how to achieve success by fixing basic operational issues and problems using a ...
Basics of Linear Algebra for Machine Learning: Discover the Mathematical Language of Data in Python By 作者: Jason Brownlee Pub Date: 2018 ISBN: n/a Pages: 212 Language: English Format: PDF Linear ...
This shows you the basics of using Direct Draw and Direct Sound. It shows you how to create a sprite and move it around the screen
By learning the foundations of the library and understanding the new versions of ASP.NET MVC and Web API, you’ll be equipped with everything you need to build .NET web applications on Windows, Mac, ...
Appendix A - The Basics of Visual Basic Appendix B - Using POV-RAY and Moray Appendix C - Using the BMPStitch Utility Index List of Figures List of Tables List of Code Examples List of ...
Packed with easy-to-follow examples, this book will ensure you will have a firm understanding of the basics of Elasticsearch 5.0, and know how to utilize its capabilities efficiently. What you will ...
It begins with the basics of accessing hardware and networking before delving deep into the less well–known areas such as cryptography and globalization, and how to use technologies such as wireless ...
Using clear explanations, standard Python libraries, and step-by-step tutorial lessons, you will discover what linear algebra is, the importance of linear algebra to machine learning, vector, and ...
《 Beginning jQuery:From the Basics of jQuery to Writing your Own Plug-ins》是Jack Franklin和Russ Ferguson合著的一本关于jQuery的入门教程。这本书旨在帮助读者从零基础开始,逐步掌握jQuery的核心概念,并...
), which contain details of all equipment, all controls, all instruments, and all lines (i.e., process, instrument, and utilities). Process simulation software is an excellent tool for producing high-...
Through this comprehensive course, you'll learn the basics of Elasticsearch and progress to using Elasticsearch in the Elastic stack and in production. Table of Contents Chapter 1. Module 1 Chapter ...
Basics of Side-Channel Analysis
Introducing ZFS on Linux Understand the Basics of Storage with ZFS 英文无水印原版pdf pdf所有页面使用FoxitReader、PDF-XChangeViewer、SumatraPDF和Firefox测试都可以打开 本资源转载自网络,如有侵权,请...