Краткое руководство. Вызов конечной точки службы "Пользовательский поиск Bing" с помощью C#
Предупреждение
30 октября 2020 г. API Поиск Bing перенесены из служб ИИ Azure в Поиск Bing Services. Эта документация приводится только для справки. Обновленную информацию см. в документации по API Поиска Bing. Инструкции по созданию ресурсов Azure для Поиска Bing приведены в статье Создание ресурса для Поиска Bing с помощью Azure Marketplace.
Узнайте, как запрашивать результаты поиска из экземпляра Пользовательского поиска Bing. Хотя это приложение написано на C#, API Пользовательского поиска Bing представляет собой веб-службу RESTful, совместимую с большинством языков программирования. Исходный код этого примера доступен на GitHub.
Предварительные требования
Экземпляр службы "Пользовательский поиск Bing". Дополнительные сведения см. в кратком руководстве Создание первого экземпляра Пользовательского поиска Bing.
Любой выпуск Visual Studio 2019 или более поздней версии.
Если вы используете Linux или MacOS, это приложение можно запустить с помощью Mono.
Пакет NuGet Пользовательского поиска Bing.
Чтобы установить этот пакет в Visual Studio, сделайте следующее:
- В Обозревателе решений щелкните проект правой кнопкой мыши и выберите Управление пакетами NuGet.
- Найдите и выберите Microsoft.Azure.CognitiveServices.Search.CustomSearch, а затем установите этот пакет.
При установке пакета NuGet Пользовательского поиска Bing Visual Studio также устанавливает следующие пакеты:
- Microsoft.Rest.ClientRuntime
- Microsoft.Rest.ClientRuntime.Azure
- Newtonsoft.Json
Создание ресурса Azure
Начните использовать API Пользовательского поиска Bing, создав один из следующих ресурсов Azure.
Ресурс для Пользовательского поиска Bing
- доступен на портале Azure до удаления.
- Используйте бесплатную ценовую категорию, чтобы опробовать службу, а затем выполните обновление до платного уровня для рабочей среды.
Ресурс для нескольких служб.
- доступен на портале Azure до удаления.
- Используйте один ключ и конечную точку для приложений в нескольких службах ИИ Azure.
Создание и инициализация приложения
Создайте в Visual Studio новое консольное приложение C#. Затем добавьте в проект следующие пакеты.
using System; using System.Net.Http; using System.Web; using Newtonsoft.Json;
Создайте следующие классы для хранения результатов поиска, возвращаемых API Пользовательского поиска Bing.
public class BingCustomSearchResponse { public string _type{ get; set; } public WebPages webPages { get; set; } } public class WebPages { public string webSearchUrl { get; set; } public int totalEstimatedMatches { get; set; } public WebPage[] value { get; set; } } public class WebPage { public string name { get; set; } public string url { get; set; } public string displayUrl { get; set; } public string snippet { get; set; } public DateTime dateLastCrawled { get; set; } public string cachedPageUrl { get; set; } }
В основном методе проекта создайте следующие переменные для своего ключа подписки API Пользовательского поиска Bing, идентификатора настраиваемой конфигурации экземпляра поиска и условия поиска.
var subscriptionKey = "YOUR-SUBSCRIPTION-KEY"; var customConfigId = "YOUR-CUSTOM-CONFIG-ID"; var searchTerm = args.Length > 0 ? args[0]:"microsoft";
Создайте URL-адрес запроса, добавив условие поиска к параметру запроса
q=
и идентификатор пользовательской конфигурации экземпляра поиска к параметруcustomconfig=
. Разделите параметры символом&
. Для значения переменнойurl
можно использовать глобальную конечную точку в следующем коде или конечную точку личного поддомена, отображаемую на портале Azure для вашего ресурса.var url = "https://api.cognitive.microsoft.com/bingcustomsearch/v7.0/search?" + "q=" + searchTerm + "&" + "customconfig=" + customConfigId;
Отправка и получение поискового запроса
Создайте запрос клиента и добавьте ключ подписки заголовка
Ocp-Apim-Subscription-Key
.var client = new HttpClient(); client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
Выполните веб-поиск и получите ответ в виде объекта JSON.
var httpResponseMessage = client.GetAsync(url).Result; var responseContent = httpResponseMessage.Content.ReadAsStringAsync().Result; BingCustomSearchResponse response = JsonConvert.DeserializeObject<BingCustomSearchResponse>(responseContent);
Обработка и просмотр результатов
Выполните итерацию по объекту ответа, чтобы отобразить информацию о каждом результате поиска, включая его имя, URL-адрес и дату последнего просмотра веб-страницы.
for(int i = 0; i < response.webPages.value.Length; i++) { var webPage = response.webPages.value[i]; Console.WriteLine("name: " + webPage.name); Console.WriteLine("url: " + webPage.url); Console.WriteLine("displayUrl: " + webPage.displayUrl); Console.WriteLine("snippet: " + webPage.snippet); Console.WriteLine("dateLastCrawled: " + webPage.dateLastCrawled); Console.WriteLine(); } Console.WriteLine("Press any key to exit..."); Console.ReadKey();