2011-05-07 4 views
3

Bing Sharp 2.0을 사용하고 있습니다. response.Total == (Bing API 이미지 검색 필터

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

그러나 결과는 다시 아무것도 온다 : I 필터로 이미지 검색을 수행하고 싶습니다, 그래서 샘플 코드를 따르

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입니다 0).

buildFilterArray()에서 필터를 두 개 지정했기 때문에 그 이유가 발견되었습니다. 어떤 필터를 제거해도 내 검색 결과는 예상 한 결과로 돌아옵니다. 이 아니지만

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:Small 

:

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 

내가 잘못 아무것도 건가요

이것은 또한이 결과를 반환, IE에서 직접 HTTP GET 요청을 실행하여 증명? 검색 요청에 필터를 두 개 이상 넣을 수 있습니까? 이미지 필터 비트가 반복되는 것을

+0

iOS 응용 프로그램에서 동일한 API를 통합하려고합니다. 제 응용 프로그램을 등록 할 수있는 곳으로 안내해주십시오. – Murali

답변

1

이 ... 실제로 당신은 당신의 두 번째 ": 중간 & Image.Filters = 사이즈 소 Image.Filters = 크기"에서 볼 수

아주 간단한 수정입니다.

:로 변경 "Image.Filters = 크기 : 중간 & 크기 : 작은"

또는 :

"Image.Filters = 크기 : 중간 & 작은"

모두 수익을 결과.

+1

여러 필터를 추가하는 올바른 방법은 "Image.filters = Size : Medium & Image.filters = Face : Face"입니다. 크기 : 중간 및 크기 : 큰 필터는 겹치지 않으며 빈 세트가됩니다. – Sid

0

@Sid는 주석에서 언급했듯이 두 개의 크기 필터를 사용할 수 없습니다.

이들은 AND 필터입니다. 적용 할 때마다 검색이 엄격하고 엄격 해집니다. Bing은 요청이 "작은"이미지와 "중간"이미지를 원한다고 읽습니다. 물론 이미지가 두 기준을 모두 충족시키지 않으므로 빈 결과 집합을 얻습니다.

@gloscherrybomb은 빙 (빙)이 "크기 : 작게"또는 더 단순한 "작게"의 마지막 매개 변수를 무시하기 때문에 대답이 효과적이라고 생각하며 중간 결과 만 제공합니다. 왜? Image.Filters 매개 변수를 "Size : Medium"으로 올바르게 읽은 다음 나머지 텍스트는 단지 쓸모가 없기 때문입니다.

Image.Filters=Size:Medium%2BStyle:Photo 

은 "%의 2B는"위의 빙을 요청하는 방법 인 URL 인코딩 더하기 기호입니다 : API를 워드 프로세서 명확하게 필터과 같이, 더하기 기호, URL 인코딩과 결합되어야 할 것을 주장 여러 필터를 연결합니다. 그러나 두 가지 크기 필터 또는 두 개의 스타일 필터와 같은 유형의 이미지 필터 중 두 가지를 지정할 수는 없습니다.

두 가지 해결 방법이 있는데 어느 것도 내가 좋아하지 않습니다. 첫 번째는 원하는 각 크기에 대해 하나씩 두 개의 요청을 병렬로 수행 한 다음 결과를 결합하는 것입니다. 하지만 어떻게 점수를 매기 지 않고 두 개의 별개 목록을 관련성있게 정리하고 정렬합니까?

쉬운 방법은 필터링을 모두 건너 뛰고 필요한 것보다 더 많은 결과를 요청하는 것입니다.그런 다음 크기 요구 사항에 따라 결과를 필터링하십시오. 페이지 매김을하지 않는 경우이 옵션이 가장 좋습니다.