Inicio rápido: Envío de una solicitud de búsqueda el SDK de Bing Entity Search para JavaQuickstart: Send a search request with the Bing Entity Search SDK for Java

Use este inicio rápido para empezar a buscar entidades con el SDK de Bing Entity Search para Java.Use this quickstart to begin searching for entities with the Bing Entity Search SDK for Java. Aunque Bing Entity Search tiene una API REST compatible con la mayoría de los lenguajes de programación, el SDK proporciona una forma sencilla de integrar el servicio en sus aplicaciones.While Bing Entity Search has a REST API compatible with most programming languages, the SDK provides an easy way to integrate the service into your applications. El código fuente de este ejemplo está disponible en GitHub.The source code for this sample can be found on GitHub.

Requisitos previosPrerequisites

Instale las dependencias del SDK de Bing Entity Search con Maven, Gradle u otro sistema de administración de dependencias.Install the Bing Entity Search SDK dependencies by using Maven, Gradle, or another dependency management system. El archivo POM de Maven requiere la declaración:The Maven POM file requires the declaration:

<dependency>
  <groupId>com.microsoft.azure.cognitiveservices</groupId>
  <artifactId>azure-cognitiveservices-entitysearch</artifactId>
  <version>1.0.2</version>
</dependency>

Debe tener una cuenta de Cognitive Services API con acceso a Bing Search APIs.You must have a Cognitive Services API account with access to the Bing Search APIs. Si no tiene una suscripción de Azure, puede crear una cuenta gratuita.If you don't have an Azure subscription, you can create an account for free. Antes de continuar, necesitará la clave de acceso que se le proporcionó al activar la versión de evaluación gratuita o puede usar una clave de suscripción de pago desde el panel de Azure.Before continuing, You will need the access key provided after activating your free trial, or a paid subscription key from your Azure dashboard.

Creación e inicialización de un proyectoCreate and initialize a project

  1. Cree un proyecto de Java en su IDE o editor favorito e importe las bibliotecas siguientes.Create a new Java project in your favorite IDE or editor, and import the following libraries.

    import com.microsoft.azure.cognitiveservices.entitysearch.*;
    import com.microsoft.azure.cognitiveservices.entitysearch.implementation.EntitySearchAPIImpl;
    import com.microsoft.azure.cognitiveservices.entitysearch.implementation.SearchResponseInner;
    import com.microsoft.rest.credentials.ServiceClientCredentials;
    import okhttp3.Interceptor;
    import okhttp3.OkHttpClient;
    import okhttp3.Request;
    import okhttp3.Response;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
  2. Creación de una variable para la clave de suscripciónCreate a variable for your subscription key

    String subscriptionKey = "your-key-here"
    

Creación de un cliente de búsquedaCreate a search client

  1. Implemente el cliente dominantEntityLookup, lo que requiere un punto de conexión de API y una instancia de la clase ServiceClientCredentials.Implement the dominantEntityLookup client, which requires your API endpoint, and an instance of the ServiceClientCredentials class.

    public static EntitySearchAPIImpl getClient(final String subscriptionKey) {
        return new EntitySearchAPIImpl("https://api.cognitive.microsoft.com/bing/v7.0/",
                new ServiceClientCredentials() {
                //...
                }
    )};
    

    Para implementar ServiceClientCredentials, siga estos pasos:To implement the ServiceClientCredentials, follow these steps:

    1. Reemplace la función applyCredentialsFilter() por un objeto OkHttpClient.Builder como parámetro.override the applyCredentialsFilter() function, with a OkHttpClient.Builder object as a parameter.

      //...
      new ServiceClientCredentials() {
              @Override
              public void applyCredentialsFilter(OkHttpClient.Builder builder) {
              //...
              }
      //...
      
    2. Dentro de applyCredentialsFilter(), llame a builder.addNetworkInterceptor().Within applyCredentialsFilter(), call builder.addNetworkInterceptor(). Cree un nuevo objeto Interceptor e invalide su método intercept() para tomar un objeto interceptor Chain.Create a new Interceptor object, and override its intercept() method to take a Chain interceptor object.

      //...
      builder.addNetworkInterceptor(
          new Interceptor() {
              @Override
              public Response intercept(Chain chain) throws IOException {
              //...    
              }
          });
      ///...
      
    3. Dentro de la función intercept, cree variables para su solicitud.Within the intercept function, create variables for your request. Use Request.Builder() para compilar su solicitud.Use Request.Builder() to build your request. Agregue su clave de suscripción al encabezado Ocp-Apim-Subscription-Key y devuelva chain.proceed() en el objeto de solicitud.Add your subscription key to the Ocp-Apim-Subscription-Key header, and return chain.proceed() on the request object.

      //...
      public Response intercept(Chain chain) throws IOException {
          Request request = null;
          Request original = chain.request();
          Request.Builder requestBuilder = original.newBuilder()
                  .addHeader("Ocp-Apim-Subscription-Key", subscriptionKey);
          request = requestBuilder.build();
          return chain.proceed(request);
      }
      //...
      

      Envío de una solicitud y recepción de la respuestaSend a request and receive a response

  2. Cree una nueva instancia del cliente de búsqueda con la clave de suscripción.Create a new instance of the search client with your subscription key. Use client.entities().search() para enviar una solicitud de búsqueda para la consulta de búsqueda satya nadella y obtener una respuesta.use client.entities().search() to send a search request for the search query satya nadella, and get a response.

    EntitySearchAPIImpl client = getClient(subscriptionKey);
    SearchResponseInner entityData = client.entities().search(
            "satya nadella", null, null, null, null, null, null, "en-us", null, null, SafeSearch.STRICT, null);
    
  3. Si se ha devuelto alguna entidad, convertirla en una lista.If any entities were returned, convert them into a list. Recórralas e imprima la entidad dominante.Iterate through them, and print the dominant entity.

    if (entityData.entities().value().size() > 0){
        // Find the entity that represents the dominant entity
        List<Thing> entrys = entityData.entities().value();
        Thing dominateEntry = null;
        for(Thing thing : entrys) {
            if(thing.entityPresentationInfo().entityScenario() == EntityScenario.DOMINANT_ENTITY) {
                System.out.println("\r\nSearched for \"Satya Nadella\" and found a dominant entity with this description:");
                System.out.println(thing.description());
                break;
            }
        }
    }
    

Pasos siguientesNext steps