Azure / Bing图像搜索API:如何添加多个图像过滤器?

时间:2012-07-25 18:31:51

标签: api azure bing

我正在尝试仅返回风格:照片方面:高大的图像。

我似乎只能搜索一个ImageFilters参数,如下所示:

https://api.datamarket.azure.com/Bing/Search/Image?Query='Houses'&$format=JSON&ImageFilters='Style:Photo'&Market='en-us'

重要的部分:

&ImageFilters='Style:Photo'

如果我尝试添加另一个,就像这样:

ImageFilters='Style:Photo'+'Aspect:Tall'

我收到此错误:

Parameter: ImageFilters has an invalid pattern of characters

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

我刚刚在Bing Search API数据集中使用多个图像过滤器尝试了以下查询,该数据集可以正常使用我的订阅:

https://api.datamarket.azure.com/Data.ashx/Bing/Search/v1/Image?Query=%27justin%20biber%27&ImageFilters=%27Style%3aPhoto%2bSize%3aSmall%2bAspect%3aTall%27& $ top = 50& $ format = Atom

相当于以下内容:

https://api.datamarket.azure.com/Data.ashx/Bing/Search/v1/Image?Query='justin biber'& ImageFilters ='Style:Photo + Size:Small + Aspect:Tall'& $ top = 50& $ format = Atom

因此,如果您尝试将整个ImageFilter放入一个单引号 ImageFilters ='样式:照片+尺寸:小+宽高比:高',它应该可以正常工作。

答案 1 :(得分:3)

如果 ImageFilters ='样式:照片+尺寸:小+宽高比:高'不工作然后尝试将 + 符号更改为%2B

ImageFilters='Style:Photo%2BSize:Small%2BAspect:Tall'
它对我有用。

如果您使用 BingSearchContainer.cs ,还有一个问题是您不能使用+符号或%2B解决方案是替换

query = query.AddQueryOption("ImageFilters", string.Concat("\'", 
System.Uri.EscapeDataString(ImageFilters), 
"\'"));

query = query.AddQueryOption("ImageFilters", string.Concat("\'", 
ImageFilters, 
"\'"));

答案 2 :(得分:1)

这是旧的,但我遇到了类似的问题,我解决了。一个问题是

ImageFilters='Style:Photo'+'Aspect:Tall'

应为ImageFilters='Style:Photo+Aspect:Tall',因此引用整个值,而不是单个参数。另一个非显而易见的事情就是替换。这是在https://github.com/xthepoet/pyBingSearchAPI的python repo中成功实现的。部分代码:

request = string.replace(request, "'", '%27')
request = string.replace(request, '"', '%27')
request = string.replace(request, '+', '%2b')
request = string.replace(request, ' ', '%20')
request = string.replace(request, ':', '%3a')

这应该给出这个想法!