首页 > 代码库 > Sample-Code:Bing Search API

Sample-Code:Bing Search API

Demo link: http://code.msdn.microsoft.com/windowsazure/How-to-use-bing-search-API-4c8b287e

Aspx Code:

 <form id="form1" runat="server">    <div>        <asp:TextBox ID="tbQueryString" runat="server" Height="43px" Width="584px"></asp:TextBox>&nbsp;<br />        <asp:Button ID="btnWebSearch" runat="server"              Text="Web Results" onclick="btnWebSearch_Click" />        &nbsp;<asp:Button ID="btnImageSearch" runat="server" Text="Image Search"             onclick="btnImageSearch_Click" />        &nbsp;<asp:Button ID="btnVideosSearch" runat="server"             Text="Videos Results" onclick="btnVideosSearch_Click" />        &nbsp;<asp:Button ID="btnNewsSearch" runat="server" Text="News Search"             onclick="btnNewsSearch_Click" />        &nbsp;<asp:Button ID="btnSpellingSuggestionSearch" runat="server" Text="Spelling Suggestion Search" onclick="btnSpellingSuggestionSearch_Click"              />        &nbsp;<asp:Button ID="btnRelatedSearch" runat="server" Text="RelatedSearch" onclick="btnRelatedSearch_Click"              />        &nbsp;<asp:Button ID="btnCompositeSearch" runat="server" Text="Composite Search"              Width="148px" onclick="btnCompositeSearch_Click" />        &nbsp;<br />        <asp:Panel ID="Panel1" runat="server">        </asp:Panel>           </div>    </form>
View Code

Code Behind:

using System;using System.Collections.Generic;using System.Web.UI.WebControls;using System.Net;using System.Text;namespace CSAzureMarketPlaceBingSearch{    public partial class Default : System.Web.UI.Page    {        // Create a Bing container.        private const string rootUrl = "https://api.datamarket.azure.com/Bing/Search";        //TODO:Change this account key to yours.        //Example:        //AgiyQkKH0B/1OTwW/zXu3hGNc2mU2OGintltk1IqajY=        private const string AccountKey = "[Account key]";              string market = "en-us";        protected void Page_Load(object sender, EventArgs e)        {                   }        /// <summary>        /// Search for web only.        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        protected void btnWebSearch_Click(object sender, EventArgs e)        {            Repeater rptResult=new Repeater();                       // This is the query expression.            string query = tbQueryString.Text;            var bingContainer = new Bing.BingSearchContainer(new Uri(rootUrl));            // Configure bingContainer to use your credentials.            bingContainer.Credentials = new NetworkCredential(AccountKey, AccountKey);            // Build the query, limiting to 10 results.            var webQuery =bingContainer.Web(query, null, null, market, null, null, null, null);            webQuery = webQuery.AddQueryOption("$top", 10);            // Run the query and display the results.            var webResults = webQuery.Execute();            Label lblResults = new Label();            StringBuilder searchResult = new StringBuilder();            foreach (Bing.WebResult wResult in webResults)            {                searchResult.Append(string.Format("<a href=http://www.mamicode.com/{2}>{0}
{1}
{2}

", wResult.Title, wResult.Url, wResult.Description)); } lblResults.Text = searchResult.ToString(); Panel1.Controls.Add(lblResults); } /// <summary> /// Search for image only. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnImageSearch_Click(object sender, EventArgs e) { Repeater rptResult = new Repeater(); string query = tbQueryString.Text; // Create a Bing container. string rootUrl = "https://api.datamarket.azure.com/Bing/Search"; var bingContainer = new Bing.BingSearchContainer(new Uri(rootUrl)); // Configure bingContainer to use your credentials. bingContainer.Credentials = new NetworkCredential(AccountKey, AccountKey); // Build the query, limiting to 10 results. var imageQuery = bingContainer.Image(query, null, market, null, null, null, null); imageQuery = imageQuery.AddQueryOption("$top", 50); // Run the query and display the results. var imageResults = imageQuery.Execute(); StringBuilder searchResult = new StringBuilder(); Label lblResults = new Label(); foreach (Bing.ImageResult iResult in imageResults) { searchResult.Append(string.Format("Image Title: <a href=http://www.mamicode.com/{1}>{0}
Image Url: {1}

", iResult.Title, iResult.MediaUrl)); } lblResults.Text = searchResult.ToString(); Panel1.Controls.Add(lblResults); } /// <summary> /// Search for video only. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnVideosSearch_Click(object sender, EventArgs e) { Repeater rptResult = new Repeater(); string query = tbQueryString.Text; // Create a Bing container. string rootUrl = "https://api.datamarket.azure.com/Bing/Search"; var bingContainer = new Bing.BingSearchContainer(new Uri(rootUrl)); // Configure bingContainer to use your credentials. bingContainer.Credentials = new NetworkCredential(AccountKey, AccountKey); // Build the query, limiting to 10 results. var mediaQuery = bingContainer.Video(query, null, market, null, null, null, null, null); mediaQuery = mediaQuery.AddQueryOption("$top", 50); // Run the query and display the results. var mediaResults = mediaQuery.Execute(); Label lblResults = new Label(); StringBuilder searchResult = new StringBuilder(); foreach (Bing.VideoResult vResult in mediaResults) { searchResult.Append(string.Format("Video Tile: <a href=http://www.mamicode.com/{1}>{0}
Video URL: {1}
", vResult.Title, vResult.MediaUrl)); } lblResults.Text=searchResult.ToString(); Panel1.Controls.Add(lblResults); } /// <summary> /// Search for news only. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnNewsSearch_Click(object sender, EventArgs e) { Repeater rptResult = new Repeater(); string query = tbQueryString.Text; // Create a Bing container. string rootUrl = "https://api.datamarket.azure.com/Bing/Search"; var bingContainer = new Bing.BingSearchContainer(new Uri(rootUrl)); // Get news for science and technology. string newsCat = "rt_ScienceAndTechnology"; // Configure bingContainer to use your credentials. bingContainer.Credentials = new NetworkCredential(AccountKey, AccountKey); // Build the query, limiting to 10 results. var newsQuery = bingContainer.News(query, null, market, null, null, null, null, newsCat, null); newsQuery = newsQuery.AddQueryOption("$top", 10); // Run the query and display the results. var newsResults = newsQuery.Execute(); StringBuilder searchResult = new StringBuilder(); Label lblResults = new Label(); foreach (Bing.NewsResult nResult in newsResults) { searchResult.Append(string.Format("<a href=http://www.mamicode.com/{0}>{1}
{2}
{3} {4}

", nResult.Url, nResult.Title, nResult.Description, nResult.Source, nResult.Date)); } lblResults.Text = searchResult.ToString(); Panel1.Controls.Add(lblResults); } /// <summary> /// Search with spelling suggestion. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnSpellingSuggestionSearch_Click(object sender, EventArgs e) { string query = tbQueryString.Text; // Create a Bing container. string rootUrl = "https://api.datamarket.azure.com/Bing/Search"; var bingContainer = new Bing.BingSearchContainer(new Uri(rootUrl)); // Configure bingContainer to use your credentials. bingContainer.Credentials = new NetworkCredential(AccountKey, AccountKey); // Build the query. var spellQuery = bingContainer.SpellingSuggestions(query, null, market, null, null, null); // Run the query and display the results. var spellResults = spellQuery.Execute(); List<Bing.SpellResult> spellResultList = new List<Bing.SpellResult>(); foreach (var result in spellResults) { spellResultList.Add(result); } Label lblResults = new Label(); if (spellResultList.Count>0) { lblResults.Text = string.Format( "Spelling suggestion is <strong>{0}</strong>", spellResultList[0].Value); } else { lblResults.Text = "No spelling suggestion. Type some typo key words for suggestion for example \"xbx gamess\""; } Panel1.Controls.Add(lblResults); } /// <summary> /// Related search. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnRelatedSearch_Click(object sender, EventArgs e) { string query = tbQueryString.Text; // Create a Bing container. string rootUrl = "https://api.datamarket.azure.com/Bing/Search"; var bingContainer = new Bing.BingSearchContainer(new Uri(rootUrl)); // Configure bingContainer to use your credentials. bingContainer.Credentials = new NetworkCredential(AccountKey, AccountKey); // Build the query, limiting to 10 results. var relatedQuery = bingContainer.RelatedSearch(query, null, market, null, null, null); relatedQuery = relatedQuery.AddQueryOption("$top", 10); // Run the query and display the results. var relatedResults = relatedQuery.Execute(); List<Bing.RelatedSearchResult> relatedSearchResultList = new List<Bing.RelatedSearchResult>(); Label lblResults = new Label(); StringBuilder searchResults=new StringBuilder(); foreach (Bing.RelatedSearchResult rResult in relatedResults) { searchResults.Append(string.Format("<a href=http://www.mamicode.com/{1}>{0}
{1}
", rResult.Title, rResult.BingUrl)); } lblResults.Text=searchResults.ToString(); Panel1.Controls.Add(lblResults); } /// <summary> /// Composite search. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnCompositeSearch_Click(object sender, EventArgs e) { string query = tbQueryString.Text; // Create a Bing container. string rootUrl = "https://api.datamarket.azure.com/Bing/Search"; var bingContainer = new Bing.BingSearchContainer(new Uri(rootUrl)); // The composite operations to use. string operations = "web+news"; // Configure bingContainer to use your credentials. bingContainer.Credentials = new NetworkCredential(AccountKey, AccountKey); // Build the query, limiting to 5 results (per service operation). var compositeQuery = bingContainer.Composite(operations, query, null, null, market, null, null, null, null, null, null, null, null, null, null); compositeQuery = compositeQuery.AddQueryOption("$top", 5); // Run the query and display the results. var compositeResults = compositeQuery.Execute(); StringBuilder searchResults = new StringBuilder(); foreach (var cResult in compositeResults) { searchResults.Append("<h3>Web Result</h3>"); // Display web results. foreach (var result in cResult.Web) { searchResults.Append(string.Format("<a href=http://www.mamicode.com/{2}>{0}
{1}
{2}

", result.Title,result.Url,result.Description)); } searchResults.Append("<h3>News Result</h3>"); // Display news results. foreach (var result in cResult.News) { searchResults.Append(string.Format("<a href=http://www.mamicode.com/{0}>{1}
{2}
{3} {4}

", result.Url, result.Title, result.Description, result.Source, result.Date)); } } Label lblResults = new Label(); lblResults.Text = searchResults.ToString(); Panel1.Controls.Add(lblResults); } }}
View Code