1

我有一个使用 Azure Datamarketplace 中的新 Bing API 的应用程序。我曾经能够使用 OR AND 等简单语法查询 Bing API。这在新 API 中似乎不起作用。

旧语法:

“杰克逊维尔美洲虎”或“NFL美洲虎”或“亚特兰大猎鹰”

这会给我一个包含任何这些短语的查询(我正在为新闻进行 rt_Sports 查询)。

我首先在查询上调用 HttpEncode,但仍然没有得到结果。如果我删除所有“标记,它会起作用,但有时我会得到关于猎鹰和美洲虎(动物)的新闻的结果......不是我想要的。

任何人都知道如何形成包含多个短语的查询?

我试图不使用 OR,不使用',使用“,使用 | 而不是 OR。所有这些都对 BING 网站起作用,只是不在 API 中。

我刚刚通过 Bing 进行了尝试,得到了 3600 万个结果:

美式橄榄球 | 西雅图海鹰队 | 纽约巨人队 | 达拉斯牛仔队 | 新奥尔良圣徒队 | 新英格兰爱国者队 | 杰克逊维尔美洲虎

API 中的相同内容返回 0。

我收到了一位朋友的电子邮件,我也将这个问题通过电子邮件发送给了他,他的想法是我做错了。应该有一种方法可以使用多个 where 子句从 Bing 对象中形成 LINQ 查询。

但我不明白这怎么可能。您允许 BingSearchContainer,然后在容器上调用 News 方法。News 方法只有一个 Query 参数。

var bingContainer = new Bing.BingSearchContainer(new Uri("https://api.datamarket.azure.com/Bing/Search"));

bingContainer.Credentials = new NetworkCredential(App.BingAPIAccountKey, App.BingAPIAccountKey);

string unifiedQuery = "NFL Football | Jacksonville Jaguars | Atlanta Falcons";

var newsQuery = bingContainer.News(unifiedQuery, null, "en-US", "Strict", null, null, null, "rt_Sports", "Relevance");

newsQuery.BeginExecute(BingNewsResultLoadedCallback, newsQuery);
4

1 回答 1

1

尝试更改unifiedQuery为以下内容:

var unifiedQuery = "'NFL Football' or 'Jacksonville Jaguars' or 'Atlanta Falcons'";

我尝试了与您的示例代码非常相似的方法,使用这种格式的查询字符串,它对我有用:

var bingUri = new Uri("https://api.datamarket.azure.com/Bing/Search/v1/", UriKind.Absolute);
var bingContainer = new BingSearchContainer(bingUri);
bingContainer.Credentials = new NetworkCredential(BingAPIUserName, BingAPIAccountKey);
var unifiedQuery = "'NFL Football' or 'Jacksonville Jaguars' or 'Atlanta Falcons'";

var newsQuery = bingContainer.News(unifiedQuery, null, "en-US", "Strict", null, null, null, "rt_Sports", "Relevance");

var results = newsQuery.Execute();
foreach (var item in results)
{
    Console.WriteLine(item.Title);
}

这是我的结果:

Fantasy Football 2012: Ranking the Top 25 RBs
NFL Football No Longer Just a Sunday Game
Ravens Notebook: Ed Reed decided to play in game vs. Falcons since he 'wasn't doing anything else'
PrimeSport Partners with Jacksonville Jaguars to Offer Tickets and Official Fan
Packages for all Home and Away Games in 2012 Season
Jaguars cut former Ravens wide receiver Lee Evans
Falcons left tackle Baker finally feels healthy
Jaguars release veteran WR Lee Evans
NFC West: 2012 NFL Training Camp
Atlanta Falcons 2012 NFL TV Schedule
Jaguars training camp: Veteran WR Lee Evans released
Jaguars score 18 points in second half to beat Giants 32-31
Jacksonville Jaguars put running back Maurice Jones-Drew on reserve/did not report list
Postcard from camp: Falcons
Questions abound as NFL preseason opens in earnest
NFL fantasy football: Ryan Mathews loses value

字符串的格式unifiedQuery基本上是 OData URI 查询字符串格式。有关这些查询字符串如何工作的完整描述,请查看http://www.odata.org/documentation/uri-conventions上的 OData URI 约定文档。

于 2012-08-14T03:25:24.203 回答