Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Bing API图像搜索过滤器_C#_Search_Bing_Bing Api - Fatal编程技术网

C# Bing API图像搜索过滤器

C# Bing API图像搜索过滤器,c#,search,bing,bing-api,C#,Search,Bing,Bing Api,我正在使用Bing Sharp 2.0。我想通过过滤器进行图像搜索,所以我遵循示例中的代码: SearchRequest searchRequest = new SearchRequest { AppId = appId, Query = query, Market = "en-US" }; ImageRequest imageRequest = new ImageRequest(); imageRequest.Filters = buildFilterArray(); imageRequest

我正在使用Bing Sharp 2.0。我想通过过滤器进行图像搜索,所以我遵循示例中的代码:

SearchRequest searchRequest = new SearchRequest { AppId = appId, Query = query, Market = "en-US" };
ImageRequest imageRequest = new ImageRequest();
imageRequest.Filters = buildFilterArray();
imageRequest.Count = imageCount;
imageRequest.Offset = (imageCount * pageNumber);
ImageResponse response = API.Image(searchRequest, imageRequest);
这是buildFilterArray:

private string[] BuildFilterArray()
{
    List<string> filters = new List<string>();
    filters.Add("Size:Small");
    filters.Add("Size:Medium");
    return filters.ToArray();
}
虽然这不是:

http://api.search.live.net/xml.aspx?AppId=0B409D9BA6759BCD3CC3D8B9A6A90F2907274BC7&Query=tektronix&Version=2.0&Market=en-US&Sources=Image&Image.Count=10&Image.Offset=0&Image.Filters=Size:Medium&Image.Filters=Size:Small

我做错什么了吗?如何在搜索请求中设置多个过滤器?

这实际上是一个非常简单的解决方案

您将在第二个“Image.Filters=Size:Medium&Image.Filters=Size:Small”中看到图像过滤器位重复。将其更改为:

“Image.Filters=大小:中&小”

甚至:

“Image.Filters=大小:中小型”


并且都返回结果。

正如@Sid在评论中提到的,您不能使用两个大小筛选器

这些是和过滤器,这意味着您应用的每一个都会使搜索变得越来越严格。Bing认为您的请求需要“小”和“中”两种图像。当然,没有图像会同时满足这两个条件,因此会得到一个空的结果集

@gloscherrybomb认为他们的答案是有效的,因为bing只是忽略了最后一个参数“Size:Small”或者更简单的“Small”,而且它只提供中等结果。为什么?因为它正确地读取图像。过滤器参数为“Size:Medium”,那么其余的文本就是垃圾。API文档明确指出,过滤器必须使用加号连接,url编码,如下所示:

Image.Filters=Size:Medium%2BStyle:Photo
上面的“%2B”是url编码的加号,Bing要求您连接多个过滤器。但同样,不能指定两个相同类型的图像过滤器,如两个大小过滤器或两个样式过滤器

有两种变通办法,我都不喜欢。第一种方法是发出两个请求,可能是并行的,每种大小一个请求,然后加入结果。但是,在没有评分的情况下,如何根据相关性将两个单独的列表合并并排序呢


更简单的方法是完全跳过筛选,并请求比您需要的更多的结果。然后根据您自己的大小要求过滤结果。如果不分页,这可能是最好的选择。

添加多个过滤器的正确方法是“Image.filters=Size:Medium&Image.filters=Face:Face”。大小:中等和大小:大的过滤器不重叠,将导致一个空集。我想在iOS应用程序中集成相同的api。你能告诉我在哪里可以注册我的应用程序吗?
Image.Filters=Size:Medium%2BStyle:Photo