Diseña la estructura de un esquema para optimizar la interpretación de consultas

La interpretación de consultas de Cloud Search convierte automáticamente los operadores y filtros de una consulta del usuario en una consulta estructurada basada en operadores. La función usa operadores definidos en el esquema y documentos indexados para deducir la intención de la búsqueda. Esto permite que los usuarios realicen búsquedas con una cantidad mínima de palabras clave y obtengan resultados precisos.

La presentación de los resultados depende del nivel de confianza. La confianza aumenta cuando las cadenas de búsqueda aparecen de forma coherente en campos de esquema específicos (p.ej., "Tom Hanks" en un campo actors). La confianza disminuye cuando las cadenas aparecen en prosa general. Un nivel de confianza alto muestra solo los resultados interpretados, mientras que un nivel de confianza más bajo los combina con los resultados estándar de palabras clave.

Ejemplo de interpretación de consultas

Considera una base de datos que contiene información sobre películas. En la figura 1, se muestra una búsqueda de muestra y su interpretación.

Descripción general de la interpretación de consultas
Figura 1: Interpretación de la búsqueda

En este ejemplo, la interpretación de la búsqueda hace lo siguiente:

  • Determina a partir del esquema que los objetos de nivel superior son objecttype:movies.
  • Analiza documentos para identificar dónde aparece "action". Si aparece principalmente en un campo genre, aumenta la confianza de que se trata de un valor de propiedad para ese campo.

La interpretación resultante es la siguiente: actor:"tom hanks" genre:action objecttype:movies

La interpretación de consultas es automática para todos los usuarios, pero puedes optimizarla estructurando tu esquema como se describe en las siguientes secciones.

Diseña la estructura de tu esquema para la interpretación de consultas

Optimizar tu esquema garantiza que te beneficies de la interpretación de consultas.

Habilita la interpretación de nombres visibles

La interpretación de la búsqueda usa objectDefinitions y propertyDefinitions para interpretar las búsquedas. Crea nombres visibles intuitivos con displayLabel para las propiedades, objectDisplayLabel para los objetos y operatorName para los operadores.

En este ejemplo, se muestran nombres visibles intuitivos para un objeto de película:

{
  "objectDefinitions": [{
    "name": "movie",
    "options": {
      "displayOptions": { "objectDisplayLabel": "Films" }
    },
    "propertyDefinitions": [{
      "name": "genre",
      "isReturnable": true,
      "textPropertyOptions": {
        "operatorOptions": { "operatorName": "genre" }
      },
      "displayOptions": { "displayLabel": "Category" }
    }]
  }]
}

Estos nombres visibles permiten interpretaciones como las siguientes:

  • "películas de acción" -> genre:action object:movies
  • “movies with genre action or thriller” -> objecttype:movies genre:(action OR thriller)
  • "películas de la categoría de comedia" -> genre:comedy objecttype:movies

Habilita las interpretaciones de fechas, números y ordenamiento

Define lessThanOperatorName y greaterThanOperatorName en IntegerOperatorOptions para todas las propiedades de fechas y números. Para habilitar el ordenamiento, establece isSortable.

En este ejemplo, se habilitan las siguientes opciones:

{
  "objectDefinitions": [{
    "propertyDefinitions": [
      {
        "name": "runtime",
        "isSortable": true,
        "integerPropertyOptions": {
          "operatorOptions": {
            "operatorName": "runtime",
            "lessThanOperatorName": "runtimelessthan",
            "greaterThanOperatorName": "runtimegreaterthan"
          }
        }
      },
      {
        "name": "releasedate",
        "isSortable": true,
        "datePropertyOptions": {
          "operatorOptions": {
            "operatorName": "releasedate",
            "lessThanOperatorName": "releasedbefore",
            "greaterThanOperatorName": "releasedafter"
          }
        }
      }
    ]
  }]
}

Esta configuración permite interpretaciones como las siguientes:

  • “Películas estrenadas este año” -> objecttype:movies releasedafter:2019-1-1 releasedbefore:2019-12-31
  • “movies with runtime less than 90” -> objecttype:movies runtimelessthan:90

Habilita la interpretación de operadores reservados

Usa operadores integrados, como type, before, after y objecttype:

  1. Completa updateTime en ItemMetadata para usar before y after.
  2. Completa mimeType en ItemMetadata para la detección automática. Por ejemplo, "videos de acción" enumera documentos con tipos de MIME de video.

Limitaciones de la interpretación de consultas

  • Solo funciona con las siguientes LCA de fuentes de datos:
    • Es de dominio público.
    • La fuente de datos es pública.
    • La mayoría de los documentos comparten la misma LCA heredada.
  • Nombres de operadores compartidos (p.ej., priority y severity, ambos con una confianza más baja (de 0 a 3)
  • De forma predeterminada, la interpretación usa minúsculas para los valores de los campos, a menos que uses exactMatchWithOperator.
  • No se admite el operador source.
  • Términos combinados de operador y texto libre (p.ej., "p0 cases severity:s0") no se interpretan.
  • Los resultados siempre se combinan con los ordenados por relevancia.