筛选搜索响应包含的结果

警告

2020 年 10 月 30 日,必应搜索 API 从 Azure AI 服务迁移到必应搜索服务。 本文档仅供参考。 有关更新的文档,请参阅必应搜索 API 文档。 关于为必应搜索创建新的 Azure 资源的说明,请参阅通过 Azure 市场创建必应搜索资源

查询 Web 时,必应会返回它为搜索找到的所有相关内容。 例如,如果搜索查询为“航行+小船”,则响应可能包含以下结果:

{
    "_type" : "SearchResponse",
    "webPages" : {
        "webSearchUrl" : "https:\/\/www.bing.com\/cr?IG=3A43C...",
        "totalEstimatedMatches" : 262000,
        "value" : [...]
    },
    "images" : {
        "id" : "https:\/\/api.cognitive.microsoft.com\/api\/v7\/#Images",
        "readLink" : "https:\/\/api.cognitive.microsoft.com\/api\/v7\/images\/search?q=sail...",
        "webSearchUrl" : "https:\/\/www.bing.com\/cr?IG=3A43CA5CA6464E5D...",
        "isFamilyFriendly" : true,
        "value" : [...]
    },
    "rankingResponse" : {
        "mainline" : {
            "items" : [...]
        }
    }
}    

查询参数

若要筛选必应返回的结果,请在调用 API 时使用以下查询参数。

ResponseFilter

可以使用 responseFilter 查询参数(以逗号分隔的结果列表)筛选必应在响应中提供的结果类型(例如,图像、视频和新闻)。 如果必应找到相关内容,响应中会包含结果。

若要从响应中排除特定结果(例如图像),请在结果类型之前添加 - 字符。 例如:

&responseFilter=-images,-videos

下面展示如何使用 responseFilter 来请求“航行小艇”的图像、视频和新闻。 对查询字符串进行编码时,逗号会更改为 %2C。

GET https://api.cognitive.microsoft.com/bing/v7.0/search?q=sailing+dinghies&responseFilter=images%2Cvideos%2Cnews&mkt=en-us HTTP/1.1  
Ocp-Apim-Subscription-Key: 123456789ABCDE  
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 822)  
X-Search-ClientIP: 999.999.999.999  
X-Search-Location:  47.60357;long:-122.3295;re:100  
X-MSEdge-ClientID: <blobFromPriorResponseGoesHere>  
Host: api.cognitive.microsoft.com  

以下展示对上一查询的响应。 因为必应未找到相关的视频和新闻结果,所以响应中不包含这些内容。

{
    "_type" : "SearchResponse",
    "images" : {
        "id" : "https:\/\/api.cognitive.microsoft.com\/api\/v7\/#Images",
        "readLink" : "https:\/\/api.cognitive.microsoft.com\/api\/v7\/images\/search?q=sail...",
        "webSearchUrl" : "https:\/\/www.bing.com\/cr?IG=3AD78B183C56456C...",
        "isFamilyFriendly" : true,
        "value" : [...]
    },
    "rankingResponse" : {
        "mainline" : {
            "items" : [{
                "answerType" : "Images",
                "value" : {
                    "id" : "https:\/\/api.cognitive.microsoft.com\/api\/v7\/#Images"
                }
            }]
        }
    }
}

虽然必应在之前的响应中未返回视频和新闻结果,但这并不意味着不存在这些视频和新闻内容。 这只表明页面中未包含。 但如果翻页浏览更多结果,则后续页面中可能会包含这些内容。 此外,如果直接调用视频搜索 API新闻搜索 API 终结点,则响应中很可能会包含结果。

不建议使用 responseFilter 从单个 API 获取结果。 如果需要来自单个必应 API 的内容,可直接调用该 API。 例如,如果希望只接收图像,可向图像搜索 API 终结点 https://api.cognitive.microsoft.com/bing/v7.0/images/search 或其他图像终结点发送请求。 调用单个 API 非常重要,这不仅是出于性能原因,还因为特定于内容的 API 可提供更丰富的结果。 例如,可使用不适用于 Web 搜索 API 的筛选器来筛选结果。

站点

若要从特定域获取搜索结果,请在查询字符串中包含 site: 查询参数。

https://api.cognitive.microsoft.com/bing/v7.0/search?q=sailing+dinghies+site:contososailing.com&mkt=en-us

注意

如果使用 site: 查询运算符,则不管 safeSearch 设置如何,仍有可能出现响应中包含成人内容的情况,具体取决于查询。 只有在知道网站内容且方案允许使用成人内容的情况下,才应使用 site:

新鲜度

若要将 Web 响应结果限制为必应在特定时段发现的网页,请将 freshness 查询参数设置为以下值之一(不区分大小写):

  • Day - 返回必应在过去 24 小时内发现的网页
  • Week - 返回必应在过去 7 天内发现的网页
  • Month - 返回在过去 30 天内发现的网页

还可以将此参数设置为 YYYY-MM-DD..YYYY-MM-DD 格式的自定义日期范围。

https://<host>/bing/v7.0/search?q=ipad+updates&freshness=2019-02-01..2019-05-30

若要将结果限制为单个日期,请将 freshness 参数设置为特定日期:

https://<host>/bing/v7.0/search?q=ipad+updates&freshness=2019-02-04

如果必应符合你的筛选条件的网页数少于你请求的网页数(或必应返回的默认数量),则结果可能包括指定时段以外的网页。

限制响应中的检索结果数

必应可以在 JSON 响应中返回多种结果类型。 例如,如果查询“sailing+dinghies”,则必应可能会返回 webpagesimagesvideosrelatedSearches

{
    "_type" : "SearchResponse",
    "queryContext" : {
        "originalQuery" : "sailing dinghies"
    },
    "webPages" : {...},
    "images" : {...},
    "relatedSearches" : {...},
    "videos" : {...},
    "rankingResponse" : {...}
}

若要将必应返回的检索结果限为排名前两位的结果(网页和图片),可将 answerCount 查询参数设置为 2。

GET https://api.cognitive.microsoft.com/bing/v7.0/search?q=sailing+dinghies&answerCount=2&mkt=en-us HTTP/1.1  
Ocp-Apim-Subscription-Key: 123456789ABCDE  
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 822)  
X-Search-ClientIP: 999.999.999.999  
X-Search-Location:  47.60357;long:-122.3295;re:100  
X-MSEdge-ClientID: <blobFromPriorResponseGoesHere>  
Host: api.cognitive.microsoft.com  

响应仅包括 webPagesimages

{
    "_type" : "SearchResponse",
    "queryContext" : {
        "originalQuery" : "sailing dinghies"
    },
    "webPages" : {...},
    "images" : {...},
    "rankingResponse" : {...}
}

如果将 responseFilter 查询参数添加到上一查询并将其设置为网页和新闻,则响应中只会包含网页,因为未对新闻进行排名。

{
    "_type" : "SearchResponse",
    "queryContext" : {
        "originalQuery" : "sailing dinghies"
    },
    "webPages" : {...},
    "rankingResponse" : {...}
}

提升未排名的检索结果

如果必应针对查询返回的首选检索结果是网页、图片、视频和 relatedSearches,则响应中会包含这些结果。 如果将 answerCount 设置为二 (2),则必应会返回排名前两位的检索结果:网页和图片。 如果希望必应在响应中包含图片和视频,请指定提升查询参数并将其设置为图片和视频。

GET https://api.cognitive.microsoft.com/bing/v7.0/search?q=sailing+dinghies&answerCount=2&promote=images%2Cvideos&mkt=en-us HTTP/1.1  
Ocp-Apim-Subscription-Key: 123456789ABCDE  
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 822)  
X-Search-ClientIP: 999.999.999.999  
X-Search-Location:  47.60357;long:-122.3295;re:100  
X-MSEdge-ClientID: <blobFromPriorResponseGoesHere>  
Host: api.cognitive.microsoft.com  

以下是对上述请求的响应。 必应返回排名前两位的检索结果(网页和图片),并将视频提升到检索结果中。

{
    "_type" : "SearchResponse",
    "queryContext" : {
        "originalQuery" : "sailiing dinghies"
    },
    "webPages" : {...},
    "images" : {...},
    "videos" : {...},
    "rankingResponse" : {...}
}

如果将 promote 设置为新闻,则响应不会包含新闻检索结果,因为它不是经过排名的检索结果,只能提升经过排名的检索结果。

要提升的检索结果不计入 answerCount 限制。 例如,如果经过排名的检索结果有新闻、图片和视频,且将 answerCount 设置为 1,将 promote 设置为新闻,则响应会包含新闻和图片。 或者,如果经过排名的检索结果有视频、图像和新闻,则响应会包含视频和新闻。

只有在指定了 answerCount 查询参数时,才可使用 promote