Краткое руководство. Отправка поисковых запросов в REST API Bing для поиска сущностей с помощью PHP
Предупреждение
30 октября 2020 г. API Поиск Bing перенесены из служб ИИ Azure в Поиск Bing Services. Эта документация приводится только для справки. Обновленную информацию см. в документации по API Поиска Bing. Инструкции по созданию ресурсов Azure для Поиска Bing приведены в статье Создание ресурса для Поиска Bing с помощью Azure Marketplace.
Из этого краткого руководства вы узнаете, как вызвать API Bing для поиска сущностей и просмотреть ответ в формате JSON. Это простое приложение PHP отправляет запрос на поиск новостей к API и отображает ответ.
Хотя это приложение создается на языке PHP, API представляет собой веб-службу RESTful и совместимо с большинством языков программирования.
Предварительные требования
- PHP 5.6.x или более поздней версии;
Создание ресурса Azure
Чтобы начать работу с API Поиска сущностей Bing, создайте один из следующих ресурсов Azure.
Ресурс Поиска сущностей Bing
- доступен на портале Azure до удаления.
- Используйте бесплатную ценовую категорию, чтобы опробовать службу, а затем выполните обновление до платного уровня для рабочей среды.
- Поиск сущностей Bing также предлагается на платных уровнях ресурса поиска Bing версии 7.
Ресурс для нескольких служб
- доступен на портале Azure до удаления.
- Используйте один ключ и конечную точку для приложений в нескольких службах ИИ Azure.
Сущности для поиска
Чтобы запустить это приложение, сделайте следующее:
- Создайте проект PHP в используемой вами интегрированной среде разработки.
- Добавьте указанный ниже код.
- Замените значение
key
ключом доступа, допустимым для подписки. - Вы можете использовать глобальную конечную точку, указанную в коде ниже, или конечную точку личного поддомена, которая отображается на портале Azure для вашего ресурса.
- Запустите программу.
<?php
// NOTE: Be sure to uncomment the following line in your php.ini file.
// ;extension=php_openssl.dll
// **********************************************
// *** Update or verify the following values. ***
// **********************************************
// Replace the subscriptionKey string value with your valid subscription key.
$subscriptionKey = 'ENTER KEY HERE';
$host = "https://api.bing.microsoft.com";
$path = "/v7.0/search";
$mkt = "en-US";
$query = "italian restaurants near me";
function search ($host, $path, $key, $mkt, $query) {
$params = '?mkt=' . $mkt . '&q=' . urlencode ($query);
$headers = "Ocp-Apim-Subscription-Key: $key\r\n";
// NOTE: Use the key 'http' even if you are making an HTTPS request. See:
// https://php.net/manual/en/function.stream-context-create.php
$options = array (
'http' => array (
'header' => $headers,
'method' => 'GET'
)
);
$context = stream_context_create ($options);
$result = file_get_contents ($host . $path . $params, false, $context);
return $result;
}
$result = search ($host, $path, $subscriptionKey, $mkt, $query);
echo json_encode (json_decode ($result), JSON_PRETTY_PRINT);
?>
Пример ответа в формате JSON
Успешный ответ возвращается в формате JSON, как показано в примере ниже.
{
"_type": "SearchResponse",
"queryContext": {
"originalQuery": "italian restaurant near me",
"askUserForLocation": true
},
"places": {
"value": [
{
"_type": "LocalBusiness",
"webSearchUrl": "https://www.bing.com/search?q=sinful+bakery&filters=local...",
"name": "Liberty's Delightful Sinful Bakery & Cafe",
"url": "https://www.contoso.com/",
"entityPresentationInfo": {
"entityScenario": "ListItem",
"entityTypeHints": [
"Place",
"LocalBusiness"
]
},
"address": {
"addressLocality": "Seattle",
"addressRegion": "WA",
"postalCode": "98112",
"addressCountry": "US",
"neighborhood": "Madison Park"
},
"telephone": "(800) 555-1212"
},
. . .
{
"_type": "Restaurant",
"webSearchUrl": "https://www.bing.com/search?q=Pickles+and+Preserves...",
"name": "Munson's Pickles and Preserves Farm",
"url": "https://www.princi.com/",
"entityPresentationInfo": {
"entityScenario": "ListItem",
"entityTypeHints": [
"Place",
"LocalBusiness",
"Restaurant"
]
},
"address": {
"addressLocality": "Seattle",
"addressRegion": "WA",
"postalCode": "98101",
"addressCountry": "US",
"neighborhood": "Capitol Hill"
},
"telephone": "(800) 555-1212"
},
. . .
]
}
}