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={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

 

你可能感兴趣的:(search)