2014-03-26 60 views
1

我想使用Bing API进行特定于站点的搜索。这里是我的程序:如何使用Bing API执行特定于站点的搜索?

namespace Microsoft.Samples.BingSearch 
{ class Program 
    { 

     static void Main(string[] args) 
     { 
      string rootUri = "https://api.datamarket.azure.com/Bing/Search"; 
      var bingContainer = new Bing.BingSearchContainer(new Uri(rootUri)); 
      var accountKey = "xxxxxxx"; 
      bingContainer.Credentials = new NetworkCredential(accountKey, accountKey); 
      string query = "SQL Server"; 
      var t = bingContainer.News(query, null, null, null, null, null, null, null, null); 
      t.AddQueryOption("site", "computerworld.com"); 
      var resultNews = t.Execute();  
      foreach(var item in resultNews) 
      { 
       var g = item.ID; 
       Console.WriteLine(item.Title + " - " + item.Source); 
      } 
     } 
    } 
} 

该程序运行(假设你输入一个有效的帐户密钥)并返回结果。不幸的是,它不会将结果限制在computerworld.com。它仿佛线:

 t.AddQueryOption("site", "computerworld.com"); 

被忽略。

我在做什么错?

注:我知道我可以通过自己构建URI而不是使用库来完成特定于站点的搜索。我想知道的是如何正确使用这个库进行网站特定的搜索。

回答

1

尝试添加site属性query本身如下:

var t = bingContainer.News("site:computerworld.com " + query, null, null, null, null, null, null, null, null); 

这种方法是在related ASP.NET blog post概述。

+1

这不起作用,它会生成一个不正确的RequestURI,如下所示: https://api.datamarket.azure.com/Bing/Search/News()?Query='site%3Acomputerworld.comSQL%20Server' – JonnyBoats

+1

@ JonnyBoats这是正确的方法。最初显示的代码在字符串连接中缺少一个空格,因此它不能正确生成查询。 –

+0

@ScottDorman:谢谢你在我吃晚饭的时候背对背。 :} – J0e3gan