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 de manera automática los operadores y filtros presentes en las consultas de los usuarios y los convierte en una consulta estructurada 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. Por ejemplo, si una string, como el nombre del actor “Tom Hanks”, aparece de manera coherente en un campo del esquema llamado actors, la confianza será 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

Supongamos 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 una consulta

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 deben clasificar 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 más que nada 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 de forma automática 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 los resultados. A fin de maximizar la utilidad de estos elementos de esquema, debes crear nombres visibles intuitivos. Para ello, usa displayLabel para los nombres de propiedades, objectDisplayLabel para los nombres de objetos y operatorName para los 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 una objectDisplayLabel con el valor “Film”.

  • El elemento propertyDefinition del género tiene operatorName definido como “genre” y displayLabel definida como “Category”.

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

  • “action movies”, “genre action type movies” o “movies genre action” se interpretarán como genre:action object:movies.
  • “movies with genre action or thriller” se interpretará como objecttype:movies genre:(action OR thriller).
  • “action film” o “action films” se interpretarán como genre:action objecttype:movies.
  • “comedy category movies” se interpretará como genre:comedy objecttype:movies.

Habilita las interpretaciones de fechas, números y ordenamiento

Debes definir los elementos lessThanOperatorName y greaterThanOperatorName, especificados en IntegerOpreatorOptions, en todas las propiedades de fechas y números. Esta configuración permite la interpretación automática de este tipo de datos. De forma adicional, para habilitar la interpretación de ordenamiento, configura la opción isSortable en 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. Se definen los elementos runtimelessthan y runtimegreaterthan para esta propiedad.
  • La propiedad de fecha releaseDate hace referencia a la fecha de estreno en cines de una película. Se definen los elementos 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, “movies released last week” se interpretará 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, “movies released this year and length more than 120” se interpretará como releasedafter:2019-1-1 releasedbefore:2019-12-31 objecttype:movies runtimegreaterthan:120.
  • “sort movies by release date” aplicará 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 los operadores reservados incorporados type, before, after y objecttype para mejorar la interpretación de consultas. Cuando indexes un documento, haz lo siguiente:

  1. Propaga el campo updateTime en 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 de ItemMetadata para usar la detección automática del tipo. La consulta “action videos” mostrará todos los documentos de películas de acción que tengan los tipos MIME application/mp4, application/mpeg4, application/x-shockwave-flashvideo/", and application/vnd.google-apps.video`.

Limitaciones de la interpretación de consultas

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

  • Solo funciona con las siguientes 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 de esquema tienen el mismo valor, la interpretación del valor para una intención 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 definiste las propiedades priority y severity con los mismos nombres de operador en el esquema. Además, supongamos que ambos operadores pueden tener los valores 0, 1, 2 o 3. En este ejemplo, el valor “0” de 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 convierte en minúsculas los valores de los campos durante el proceso, excepto para los operadores de texto definidos con la opción 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 resultados.