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={2}>{0}</a><br /> {1}<br /> {2}<br /><br />",
                    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={1}>{0}</a><br />Image Url: {1}<br /><br />",
                    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={1}>{0}</a><br />Video URL: {1}<br />",
                    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={0}>{1}</a><br /> {2}<br /> {3}&nbsp;{4}<br /><br />",
                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={1}>{0}</a><br /> {1}<br />",
                   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={2}>{0}</a><br /> {1}<br /> {2}<br /><br />",
                       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={0}>{1}</a><br /> {2}<br /> {3}&nbsp;{4}<br /><br />",
                        result.Url, result.Title, result.Description, result.Source, result.Date));
                }
            }

            Label lblResults = new Label();

            lblResults.Text = searchResults.ToString();
            Panel1.Controls.Add(lblResults);

        }

    }
}
View Code

 

posted on 2014-07-10 13:58  aking96  阅读(554)  评论(0编辑  收藏  举报