Поделиться через


Краткое руководство. Вызов конечной точки службы "Пользовательский поиск Bing" с помощью C#

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

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

Узнайте, как запрашивать результаты поиска из экземпляра Пользовательского поиска Bing. Хотя это приложение написано на C#, API Пользовательского поиска Bing представляет собой веб-службу RESTful, совместимую с большинством языков программирования. Исходный код этого примера доступен на GitHub.

Предварительные требования

Создание ресурса Azure

Начните использовать API Пользовательского поиска Bing, создав один из следующих ресурсов Azure.

Ресурс для Пользовательского поиска Bing

  • доступен на портале Azure до удаления.
  • Используйте бесплатную ценовую категорию, чтобы опробовать службу, а затем выполните обновление до платного уровня для рабочей среды.

Ресурс для нескольких служб.

  • доступен на портале Azure до удаления.
  • Используйте один ключ и конечную точку для приложений в нескольких службах ИИ Azure.

Создание и инициализация приложения

  1. Создайте в Visual Studio новое консольное приложение C#. Затем добавьте в проект следующие пакеты.

    using System;
    using System.Net.Http;
    using System.Web;
    using Newtonsoft.Json;
    
  2. Создайте следующие классы для хранения результатов поиска, возвращаемых 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; }
    }
    
  3. В основном методе проекта создайте следующие переменные для своего ключа подписки API Пользовательского поиска Bing, идентификатора настраиваемой конфигурации экземпляра поиска и условия поиска.

    var subscriptionKey = "YOUR-SUBSCRIPTION-KEY";
    var customConfigId = "YOUR-CUSTOM-CONFIG-ID";
    var searchTerm = args.Length > 0 ? args[0]:"microsoft";
    
  4. Создайте URL-адрес запроса, добавив условие поиска к параметру запроса q= и идентификатор пользовательской конфигурации экземпляра поиска к параметру customconfig=. Разделите параметры символом &. Для значения переменной url можно использовать глобальную конечную точку в следующем коде или конечную точку личного поддомена, отображаемую на портале Azure для вашего ресурса.

    var url = "https://api.cognitive.microsoft.com/bingcustomsearch/v7.0/search?" +
                "q=" + searchTerm + "&" +
                "customconfig=" + customConfigId;
    

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

  1. Создайте запрос клиента и добавьте ключ подписки заголовка Ocp-Apim-Subscription-Key.

    var client = new HttpClient();
    client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
    
  2. Выполните веб-поиск и получите ответ в виде объекта 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();
    

Дальнейшие действия