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

La función de interpretación de consultas de Cloud Search interpreta automáticamente los operadores y filtros presentes en las consultas de los usuarios y los convierte en una consulta estructurada y basada en operadores. La interpretación de consultas usa operadores definidos en el esquema junto con los documentos indexados para deducir el significado de las consultas de los usuarios. Esta función permite que los usuarios obtengan resultados precisos incluso si usan una cantidad mínima de palabras clave en sus búsquedas.

Los resultados reales que se muestran a los usuarios dependen del nivel de confianza de la interpretación de consultas. Muchos factores influyen en la confianza, como el lugar en que aparecen las strings de consulta en los documentos indexados. Una cadena, como como nombre del actor "Tom Hanks", aparecer constantemente en un campo de esquema llamado actors da como resultado una confianza más alta. Por el contrario, si la misma string (“Tom Hanks”) aparece en un párrafo en lugar de en un campo del esquema, la confianza será más baja. Si la confianza es alta, se mostrarán al usuario solo los resultados de la interpretación de consultas. Si es baja, se mezclarán los resultados de la interpretación de consultas con los de la búsqueda normal con palabras clave.

Ejemplo de interpretación de consultas

Supón que tienes una fuente de datos, como una base de datos, con información sobre películas. En la Figura 1, se muestra una búsqueda de muestra y su interpretación correspondiente.

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

En esta consulta de ejemplo, la interpretación de consultas realiza lo siguiente:

  • Analiza el esquema y determina que los objetos de nivel superior de la fuente de datos se clasifican como objecttype:movies. Ahora la interpretación de consultas sabe que la palabra “movies” de la consulta es un tipo de objeto.

  • Analiza documentos presentes en la fuente de datos, junto con el esquema, para determinar en qué sitio aparece la string “action”. Si la string aparece principalmente en un campo “genre” específico de la fuente de datos, la interpretación de consultas tiene la confianza para determinar que “action” es un valor de la propiedad “genre” según lo definido en el esquema. Si la string aparece principalmente en el contexto de los párrafos del contenido, el nivel de confianza de la interpretación de consultas disminuirá.

El resultado de la interpretación de la consulta es el siguiente:

  actor:“tom hanks” genre:action objecttype:movies

La interpretación de consultas se habilita automáticamente para todos los clientes de Cloud Search, sin acciones adicionales. Sin embargo, para optimizar la interpretación de consultas, debes diseñar la estructura del esquema según las instrucciones que aparecen en este documento.

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

Debes diseñar la estructura del esquema para garantizar que puedas beneficiarte de la interpretación de consultas.

Habilita la interpretación de nombres visibles

La interpretación de consultas de Cloud Search usa objectDefinitions y propertyDefinitions en un esquema para interpretar la consulta de un usuario y ajustar resultados. Para maximizar el beneficio de estos elementos del esquema, debes crear nombres visibles intuitivos con displayLabel para los nombres de propiedades, objectDisplayLabel para nombres de objetos y operatorName para operadores.

En el siguiente esquema, se muestran nombres visibles intuitivos de un objeto “movie”:

{
  "objectDefinitions": [
    {
      "name": "movie",
        "options": {
          "displayOptions": {
          "objectDisplayLabel": "Films"
        }
        ...
      },
      "propertyDefinitions": [
        {
          "name": "genre",
          "isReturnable": true,
          "isRepeatable": true,
          "isFacetable": true,
          "textPropertyOptions": {
          "retrievalImportance": { "importance": "HIGHEST" },
          "operatorOptions": {
            "operatorName": "genre"
          }
        },
        "displayOptions": {
          "displayLabel": "Category"
        }
      },
      ...
      ]
    }
  ]
}

En el ejemplo anterior, ocurre lo siguiente:

  • La definición del objeto “movie” tiene un objectDisplayLabel “Film”.

  • El elemento propertyDefinition del género tiene el valor operatorName de “genre” y “Category”. displayLabel

Estos nombres visibles permiten que Cloud Search realice las siguientes interpretaciones de consultas:

  • “películas de acción”, “películas de tipo acción por género” o “películas, género, acción” son se interpreta como genre:action object:movies.
  • “movies with genre action or thriller” se interpretará como objecttype:movies genre:(action OR thriller)
  • “action film” o “action movie” se interpreta como genre:action objecttype:movies
  • “comedy category Movies” se interpreta como genre:comedy objecttype:movies.

Habilita las interpretaciones de fechas, números y ordenamiento

Debes definir lessThanOperatorName y greaterThanOperatorName, especificadas en IntegerOperatorOptions, para todas las fechas y muchas propiedades numéricas. Esta configuración permite la interpretación de este tipo de datos. Además, para habilitar la interpretación de ordenamiento, configura la opción isSortable para las propiedades de fechas y números. En el siguiente esquema, se muestra cómo habilitar estas opciones:

{
  "objectDefinitions": [
    {
      "options": {
        "displayOptions": {
          "objectDisplayLabel": "Films"
        }
      },
      "propertyDefinitions": [
        {
          "name": "runtime",
          "isReturnable": true,
          "isSortable": true,
          "integerPropertyOptions": {
            "orderedRanking": "DESCENDING",
            "minimumValue": {
              "value": 10
            },
            "maximumValue": {
              "value": 500
            },
            "operatorOptions": {
              "operatorName": "runtime",
              "lessThanOperatorName": "runtimelessthan",
              "greaterThanOperatorName": "runtimegreaterthan"
            }
          },
          "displayOptions": {
            "displayLabel": "Length"
          }
        },
        {
          "name": "releasedate",
          "isReturnable": true,
          "isSortable": true,
          "datePropertyOptions": {
            "operatorOptions": {
              "operatorName": "releasedate",
              "lessThanOperatorName": "releasedbefore",
              "greaterThanOperatorName": "releasedafter"
            }
          }
        }
      ]
    }
  ]
}

En el ejemplo anterior, ocurre lo siguiente:

  • La propiedad numérica runtime hace referencia a la duración de una película. El Se establecieron runtimelessthan y runtimegreaterthan para esta propiedad.
  • La propiedad de fecha releaseDate hace referencia a la fecha de estreno de una película en el teatros. Se establecieron releasedbefore y releasedafter para esta propiedad.

Esta configuración permite que Cloud Search realice las siguientes interpretaciones de consultas:

  • Si suponemos que estamos en el año 2019, “movies released this year” se interpretará como objecttype: movies releasedafter:2019-1-1 releasedbefore:2019-12-31
  • Si suponemos que estamos en la tercera semana de marzo, “películas lanzadas la semana pasada” se interpretado como objecttype: movies releasedafter:2019-3-10 releasedbefore:2019-3-16
  • “movies with runtime less than 90” se interpretará como objjecttype: movies runtimelessthan:90.
  • Si suponemos que estamos en el año 2019, “las películas que se estrenaron este año y su duración es superior a 120” se interpreta como releasedafter:2019-1-1 releasedbefore:2019-12-31 objecttype:movies runtimegreaterthan:120.
  • “sort movies by release date” aplicaría un filtro en “objecttype: movies” y los resultados que se muestren se ordenarán por fecha de estreno en el orden ascendente predeterminado.

Habilita la interpretación de operadores reservados

También puedes usar las clases type, before, after y objecttype reservadas de forma integrada. para mejorar la interpretación de consultas. Cuando indexes un documento, haz lo siguiente:

  1. Propaga el campo updateTime en la ItemMetadata para usar los operadores before y after. Esta configuración permite que Cloud Search realice las siguientes interpretaciones de consultas:

    • “movies from last week” mostrará todas las películas que se actualizaron en el índice la semana pasada.
    • “movies before jan 2019” mostrará todas las películas que se indexaron antes de enero de 2019.
  2. Propaga el campo mimeType en ItemMetadata para usar la detección automática el tipo de letra. La consulta “videos de acción” enumeraría todos los documentos de películas de acción con un MIME tipo de application/mp4, application/mpeg4, application/x-shockwave-flash video/ y application/vnd.google-apps.video.

Limitaciones de la interpretación de consultas

La función de interpretación de consultas tiene las siguientes limitaciones:

  • La interpretación de consultas solo funciona con estas LCA de fuentes de datos:
    • Todos los documentos que son públicos en el dominio (todos los usuarios del dominio pueden acceder a ellos).
    • Todos los documentos que son públicos en la fuente de datos (todos los usuarios que tienen acceso a la LCA de la fuente de datos)
    • La mayoría de los documentos de la fuente de datos que tienen la misma LCA (todos los documentos heredan la LCA del mismo elemento del contenedor), sin lectores adicionales definidos
  • Si varios operadores del esquema tienen el mismo valor, la interpretación de los valores para un intent de operador presente en una consulta dependerá del factor de confianza general que muestre el sistema de interpretación de consultas. Por ejemplo, supongamos que tener las propiedades priority y severity con los mismos nombres de operador definidos en el esquema. Además, supongamos que ambos operadores pueden tener los valores 0, 1, 2 o 3. En este ejemplo, “0” en una consulta puede hacer referencia al valor del operador de priority o severity. Los valores son ambiguos, por lo que disminuirá el nivel de confianza.
  • De forma predeterminada, la interpretación de consultas de Cloud Search reduce las mayúsculas y minúsculas del campo de salida al interpretar la consulta, excepto por los operadores de texto definidos con Opciones exactMatchWithOperator.
  • No se admite el operador source en las consultas.
  • No se interpretan las consultas en las que se usan términos basados en operadores y de texto libre al mismo tiempo. Por ejemplo, no se admitiría la consulta “p0 priority cases severity:s0”, ya que “p0 priority cases” es un término de texto libre y “severity:s0” es un término basado en operadores.
  • La estrategia de interpretación de consultas siempre mezclará los resultados interpretados con los comunes (no interpretados y ordenados por relevancia). La función no realiza un reemplazo de páginas completo de los resultados.