Фильтрация результатов, возвращаемых в ответе на запрос поиска

Предупреждение

30 октября 2020 г. API-интерфейсы Поиск Bing перемещены из служб ИИ Azure в службы Поиск Bing. Эта документация приводится только для справки. Обновленную информацию см. в документации по API Поиска Bing. Инструкции по созданию новых ресурсов Azure для Поиска Bing см. в статье Создание ресурса Поиска Bing с помощью Azure Marketplace.

Когда вы делаете запрос в Интернете, Bing возвращает все релевантное содержимое для поиска. Например, если поисковый запрос содержит условие "кораблевождение+шлюпки", то ответ может содержать приведенные ниже результаты.

{
    "_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" : [...]
        }
    }
}    

Параметры запроса

Чтобы отфильтровать возвращаемые Bing ответы, используйте приведенные ниже параметры запроса при вызове API.

Параметр ResponseFilter

С помощью параметра запроса responseFilter, представляющий собой список ответов с разделителями-запятыми, можно отфильтровать типы ответов, которые Bing включает в ответ (например, изображения, видео и новости). Ответ будет добавлен в результаты, если Bing найдет содержимое, отвечающее запросу.

Чтобы исключить определенные ответы из результатов, например изображения, добавьте символ - к типу ответа. Пример:

&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  

Ниже показан ответ на предыдущий запрос. Так как служба Bing не нашла подходящих видео и новостей, их не будет в ответе.

{
    "_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"
                }
            }]
        }
    }
}

Хотя служба Bing не вернула видео и новости в предыдущем ответе, это не означает, что таких видео и новостей не существует. Это лишь означает, что их нет на странице. Тем не менее, если вы пролистаете страницы с дополнительными результатами, скорее всего, они будут содержать видео или новости. Кроме того, если вызвать конечные точки API для поиска видео и API для поиска новостей напрямую, скорее всего, ответ будет содержать эти результаты.

Не рекомендуется использовать responseFilter для получения результатов из одного API. Если требуется содержимое из одного API Bing, вызывайте этот API напрямую. Например, чтобы получить только изображения, отправьте запрос к конечной точке API для поиска изображений (https://api.cognitive.microsoft.com/bing/v7.0/images/search) или другой конечной точке службы "Поиск изображений". Вызов одного API важен не только из соображений производительности, но потому, что интерфейсы API конкретного содержимого предоставляют более подробные результаты. Например, можно использовать фильтры результатов, которые недоступны в API для поиска в Интернете.

Сайт

Чтобы получить результаты поиска в определенной области, добавьте параметр запроса site: в строку запроса.

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

Примечание

Если вы используете оператор site:, в зависимости от запроса есть вероятность, что ответ включает содержимое для взрослых независимо от параметра safeSearch. Вы должны использовать site:, только если вам известно о содержимом на сайте, и ваш сценарий поддерживает возможность использования содержимого для взрослых.

Актуальность

Чтобы ограничить результаты веб-страницами, обнаруженными Bing в течение определенного периода времени, задайте для параметра запроса freshness одно из следующих значений (регистр не учитывается):

  • Day — возвращает веб-страницы, обнаруженные Bing за последние 24 часа;
  • Week — возвращает веб-страницы, обнаруженные Bing за последние 7 дней;
  • Month — возвращает веб-страницы, обнаруженные Bing за последние 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

Результаты могут включать веб-страницы, находящиеся за пределами указанного периода, если число веб-страниц, найденных Bing и соответствующих критериям фильтра, меньше числа запрошенных веб-страниц (или числа страниц по умолчанию, возвращаемых Bing).

Ограничение числа результатов в ответе

Bing может возвращать несколько типов ответов в ответе JSON. Например, если вы запрашиваете катание на лодке+шлюпки, служба Bing может вернуть webpages, images, videos и relatedSearches.

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

Чтобы ограничить количество результатов, которые возвращает служба Bing, двумя наиболее популярными ответами (веб-страницы и изображения), задайте для параметра запроса 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  

Ответ содержит только webPages и images.

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

Если в предыдущий запрос добавить параметр responseFilter и задать для него веб-страницы и новости, то ответ будет содержать только веб-страницы, так как новости не ранжируются.

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

Повышение уровня результатов, которые не ранжированы

Если наиболее подходящими ранжированными результатами запроса являются веб-страницы, изображения, видео и сведения relatedSearches, то служба Bing возвращает их. Если задать для параметра answerCount значение 2, служба Bing вернет два наиболее подходящих ранжированных результата: веб-страницы и изображения. Если требуется, чтобы служба Bing включила в ответ изображения и видео, укажите параметр запроса promote и задайте для него изображения и видео.

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  

Ниже показан ответ на представленный выше запрос. Служба Bing возвращает два наиболее подходящих результата, веб-страницы и изображения, и повышает уровень видео в ответе.

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

Если задать для параметра promote новости, ответ не будет содержать новостей, так как они не ранжируются, а повысить уровень можно только для ранжированных результатов.

Результаты, уровень которых требуется повысить, не учитываются в предельном количестве answerCount. Например, если к ранжированным результатам относятся новости, изображения и видео, для параметра answerCount задано значение 1 и для параметра promote заданы новости, то ответ содержит новости и изображения. Если же к ранжированным результатам относятся видео, изображения и новости, то ответ содержит видео и новости.

Вы можете использовать promote только в том случае, если указан параметр запроса answerCount.