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 las consultas de los usuarios en consultas estructuradas basadas en operadores. La función usa operadores definidos en el esquema y documentos indexados para deducir la intención de la consulta. Esto permite que los usuarios realicen búsquedas con un mínimo de palabras clave y obtengan resultados precisos.

La presentación de los resultados depende de la confianza. La confianza aumenta cuando las cadenas de consulta aparecen de manera coherente en campos específicos del esquema (p.ej., "Tom Hanks" en un campo actors). La confianza disminuye cuando las cadenas aparecen en texto general. Si la confianza es alta, se muestran solo los resultados interpretados, mientras que, si es baja, se mezclan con los resultados de palabras clave estándar.

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 consultas

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

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

La interpretación resultante es: 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 del esquema para la interpretación de consultas

Si optimizas tu esquema, te aseguras de beneficiarte de la interpretación de consultas.

Habilita la interpretación de nombres visibles

La interpretación de consultas usa objectDefinitions y propertyDefinitions para interpretar las consultas. 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:

  • "action movies" -> genre:action object:movies
  • "movies with genre action or thriller" -> objecttype:movies genre:(action OR thriller)
  • "comedy category movies" -> genre:comedy objecttype:movies

Habilita las interpretaciones de fechas, números y ordenamiento

Define lessThanOperatorName y greaterThanOperatorName en IntegerOperatorOptions para todas las propiedades numéricas y de fecha. Para habilitar la clasificación, configura 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:

  • "movies released this year" -> 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. Propaga updateTime en ItemMetadata para usar before y after.
  2. Propaga mimeType en ItemMetadata para la detección automática. Por ejemplo, "action videos" muestra documentos con tipos MIME de video.

Limitaciones de la interpretación de consultas

  • Solo funciona con las siguientes LCA de fuentes de datos:
    • Dominio público
    • Fuente de datos pública
    • La mayoría de los documentos comparten la misma LCA heredada.
  • Los nombres de operadores compartidos (p.ej., priority y severity que usan 0-3) disminuyen la confianza.
  • De forma predeterminada, la interpretación usa letras minúsculas para los valores de los campos, a menos que uses exactMatchWithOperator.
  • No se admite el operador source.
  • No se interpretan los términos combinados de operadores y texto libre (p.ej., "p0 cases severity:s0").
  • Los resultados siempre se mezclan con los resultados ordenados por relevancia.