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.
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 establecieronruntimelessthan
yruntimegreaterthan
para esta propiedad. - La propiedad de fecha
releaseDate
hace referencia a la fecha de estreno de una película en el teatros. Se establecieronreleasedbefore
yreleasedafter
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:
Propaga el campo
updateTime
en laItemMetadata
para usar los operadoresbefore
yafter
. 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.
Propaga el campo
mimeType
enItemMetadata
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 deapplication/mp4
,application/mpeg4
,application/x-shockwave-flash
video/
yapplication/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
yseverity
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 depriority
oseverity
. 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.