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


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

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

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

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

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

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

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

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

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

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

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

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

  1. Создайте проект Java в любой интегрированной среде разработки или редакторе, а затем импортируйте в него следующие библиотеки:

    import java.io.InputStream;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Scanner;
    import javax.net.ssl.HttpsURLConnection;
    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    import com.google.gson.JsonObject;
    import com.google.gson.JsonParser;
    
  2. Создайте класс CustomSrchJava и переменные для ключа подписки, конечной точки пользовательского поиска и идентификатора настраиваемой конфигурации экземпляра пользовательского поиска. Вы можете использовать глобальную конечную точку, указанную в коде ниже, или конечную точку личного поддомена, которая отображается на портале Azure для вашего ресурса.

    public class CustomSrchJava {
        static String host = "https://api.cognitive.microsoft.com";
        static String path = "/bingcustomsearch/v7.0/search";
        static String subscriptionKey = "YOUR-SUBSCRIPTION-KEY"; 
        static String customConfigId = "YOUR-CUSTOM-CONFIG-ID";
        static String searchTerm = "Microsoft";  
    ...
    
  3. Создайте еще один класс с именем SearchResults, который будет содержать ответ из экземпляра службы "Пользовательский поиск Bing".

    class SearchResults {
        HashMap<String, String> relevantHeaders;
        String jsonResponse;
        SearchResults(HashMap<String, String> headers, String json) {
            relevantHeaders = headers;
            jsonResponse = json;
        }
    }
    
  4. Создайте функцию с именем prettify() для форматирования ответа JSON API пользовательского поиска Bing.

        // pretty-printer for JSON; uses GSON parser to parse and re-serialize
        public static String prettify(String json_text) {
            JsonParser parser = new JsonParser();
            JsonObject json = parser.parse(json_text).getAsJsonObject();
            Gson gson = new GsonBuilder().setPrettyPrinting().create();
            return gson.toJson(json);
        }
    

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

  1. Создайте функцию с именем SearchWeb(), которая отправляет запрос и возвращает объект SearchResults. Создайте URL-адрес запроса, объединив данные идентификатора пользовательской конфигурации, запроса и конечной точки. Добавьте ключ подписки в заголовок Ocp-Apim-Subscription-Key.

    public class CustomSrchJava {
    ...
        public static SearchResults SearchWeb (String searchQuery) throws Exception {
            // construct the URL for your search request (endpoint + query string)
            URL url = new URL(host + path + "?q=" +  URLEncoder.encode(searchTerm, "UTF-8") + "&CustomConfig=" + customConfigId);
            HttpsURLConnection connection = (HttpsURLConnection)url.openConnection();
            connection.setRequestProperty("Ocp-Apim-Subscription-Key", subscriptionKey);
    ...
    
  2. Создайте поток и сохраните ответ JSON в объекте SearchResults.

    public class CustomSrchJava {
    ...
        public static SearchResults SearchWeb (String searchQuery) throws Exception {
            ...
            // receive the JSON body
            InputStream stream = connection.getInputStream();
            String response = new Scanner(stream).useDelimiter("\\A").next();
    
            // construct result object for return
            SearchResults results = new SearchResults(new HashMap<String, String>(), response);
    
            stream.close();
            return results;
        }
    
  3. Выведите на экран ответ JSON.

    System.out.println("\nJSON Response:\n");
    System.out.println(prettify(result.jsonResponse));
    
  4. Запустите программу.

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