O recurso interpretação de consulta do Cloud Search interpreta automaticamente os operadores e os filtros na consulta de um usuário e converte esses elementos em uma consulta estruturada e baseada no operador. A interpretação de consulta usa operadores definidos no esquema, juntamente com os documentos indexados, para deduzir o significado da consulta do usuário. Esse recurso permite que um usuário pesquise com um mínimo de palavras-chave e, ao mesmo tempo, receba resultados precisos.
Os resultados reais apresentados ao usuário dependem da confiança da interpretação de consulta. A confiança é baseada em vários fatores, que incluem onde as strings de consulta aparecem em documentos indexados. Uma string, como
como o nome do ator "Tom Hanks", que aparecem de forma consistente
esquema chamado actors
resulta em uma confiança maior. A mesma string ("Tom Hanks") que aparece dentro de um parágrafo, em vez de no campo de esquema, pode resultar em menor confiança. No caso de uma grande confiança, apenas os resultados da interpretação de consulta são exibidos para o usuário. No caso de uma confiança menor, os resultados da interpretação de consulta são combinados com resultados de pesquisa de palavras-chave normais.
Exemplo de interpretação de consulta
Suponha que você tenha uma fonte de dados, como um banco de dados, que contém informações sobre filmes. A Figura 1 exibe uma amostra da consulta de pesquisa e a interpretação resultante.
![Visão geral da interpretação de consulta](https://developers-dot-devsite-v2-prod.appspot.com/static/cloud-search/images/query-interpretation.png?authuser=7&hl=pt)
Dada essa consulta de exemplo, a interpretação de consulta faz o seguinte:
Analisa o esquema e determina que os objetos de nível superior na fonte de dados são classificadas como
objecttype:movies
. Agora, a interpretação de consulta sabe que "filmes" "na consulta é um tipo de objeto.Verifica documentos na fonte de dados, em conjunto com o esquema, para determinar onde a string "ação" ocorre. Se a string ocorrer principalmente em um campo de origem de dados de "gênero" específico, a interpretação de consulta terá a confiança de que "ação" é um valor de propriedade para a propriedade "gênero", conforme definido no esquema. Se a string ocorrer principalmente no contexto de parágrafos de conteúdo, o nível de confiança da interpretação de consulta diminuirá.
A interpretação de consulta resultante é:
actor:“tom hanks” genre:action objecttype:movies
A interpretação de consulta é ativada automaticamente para todos os clientes do Cloud Search sem nenhum trabalho adicional. No entanto, para uma interpretação de consulta ideal, você deve estruturar seu esquema de acordo com as instruções neste documento.
Estruturar seu esquema para suportar a interpretação de consulta
Você deve estruturar seu esquema para garantir que possa aproveitar a interpretação de consulta.
Ativar interpretações de nome de exibição
A interpretação de consulta do Cloud Search usa
objectDefinitions
e
propertyDefinitions
em um esquema para interpretar a consulta de um usuário e ajustar
resultados. Para maximizar o benefício desses elementos de esquema, você deve criar
de exibição intuitivos usando
displayLabel
para nomes de propriedades,
objectDisplayLabel
para nomes de objetos e operatorName
para operadores.
O esquema a seguir mostra nomes de exibição intuitivos para um 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"
}
},
...
]
}
]
}
No exemplo anterior, ocorre o seguinte:
A definição do objeto "filme" tem um "Filme"
objectDisplayLabel
.O gênero propriedadeDefinition tem um "genre"
operatorName
e uma "Category".displayLabel
.
Esses nomes de exibição permitem que o Cloud Search faça as seguintes interpretações de consulta:
- “filmes de ação”, “filmes de tipo de ação por gênero” ou “filmes de gênero de ação” são
interpretado como
genre:action object:movies
. - “filmes com gênero de ação ou suspense” é interpretado como
objecttype:movies genre:(action OR thriller)
: - “filme de ação” ou “filmes de ação” é interpretado como
genre:action objecttype:movies
: - “filmes de categoria comédia” é interpretado como
genre:comedy objecttype:movies
.
Ativar interpretações de data, numéricas e de classificação
Defina lessThanOperatorName
e greaterThanOperatorName
.
especificado em
IntegerOperatorOptions
, para todas as datas e
propriedades numéricas. Essas configurações ativam interpretações numéricas e de data automáticas. Além disso, para permitir interpretações de classificação,
defina a opção isSortable
para propriedades numéricas e de data. O esquema a seguir mostra como ativar essas opções.
{
"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"
}
}
}
]
}
]
}
No exemplo anterior, ocorre o seguinte:
- A propriedade numérica
runtime
refere-se à duração de um filme. Oruntimelessthan
eruntimegreaterthan
estão definidos para esta propriedade. - A propriedade de data
releaseDate
refere-se a quando um filme é lançado no teatros. Oreleasedbefore
e oreleasedafter
estão definidos para esta propriedade.
Essas configurações permitem que o Cloud Search faça as seguintes interpretações de consulta:
- Supondo que o ano seja 2019, “filmes lançados este ano” é interpretado como
objecttype: movies releasedafter:2019-1-1 releasedbefore:2019-12-31
: - Supondo que a semana seja a terceira semana de março, “filmes lançados na semana passada” é
interpretado como
objecttype: movies releasedafter:2019-3-10 releasedbefore:2019-3-16
- "filmes com tempo de execução menor que 90" é interpretado como
objjecttype: movies runtimelessthan:90
. - Supondo que o ano seja 2019, “filmes lançados este ano e têm mais de
120” é interpretado como
releasedafter:2019-1-1 releasedbefore:2019-12-31 objecttype:movies runtimegreaterthan:120
. - “classificar filmes pela data de lançamento” filtraria “objecttype: movies” e os resultados apresentados seriam classificados na data de lançamento com a ordem de classificação padrão sendo crescente.
Ativar interpretação de operador reservado
Você também pode usar os recursos integrados reservados type
, before
, after
e objecttype
.
para aprimorar a interpretação de consultas. Ao indexar um documento, faça o seguinte:
Preencha o campo
updateTime
naItemMetadata
para usar os operadoresbefore
eafter
. Essas configurações permitem que o Cloud Search faça as seguintes interpretações de consulta:- "filmes da semana passada" listaria todos os filmes que foram atualizados no índice na semana anterior.
- "filmes antes de janeiro de 2019" listaria todos os filmes indexados antes de janeiro de 2019.
Preencha o campo
mimeType
noItemMetadata
para usar a detecção automática de não é válido. Uma consulta “vídeos de ação” listaria todos os documentos de filmes de ação com um mime tipo deapplication/mp4
,application/mpeg4
,application/x-shockwave-flash
,video/
eapplication/vnd.google-apps.video
.
Limitações de interpretação de consulta
O recurso de interpretação de consulta tem as seguintes limitações.
- A interpretação de consulta só funciona para estas ACLs da fonte de dados:
- Todos os documentos são de domínio público (todos no domínio podem acessar).
- Todos os documentos são públicos como fonte de dados (todos que têm acesso à ACL de fonte de dados).
- A maioria dos documentos na fonte de dados tem a mesma ACL (todos os documentos herdam a ACL do mesmo item de contêiner) sem leitores adicionais definidos.
- Se vários operadores de esquema tiverem o mesmo valor, a interpretação desse valor para a intenção do operador de uma consulta depende do fator de confiança geral retornado pelo sistema de interpretação de consulta. Por exemplo, suponha
têm as propriedades
priority
eseverity
com os mesmos nomes de operadores; definido no esquema. Digamos que os dois operadores possam ter os valores 0, 1, 2 ou 3. Neste exemplo, "0" em uma consulta pode fazer referência ao valor do operador parapriority
ouseverity
. Esses valores são ambíguos e o nível de confiança é menor. - Por padrão, a interpretação de consulta do Cloud Search reduz o caso de campos
valores ao interpretar a consulta, exceto para os operadores de texto definidos com
Opções do
exactMatchWithOperator
. - O operador
source
não é aceito em consultas. - As consultas que combinam termos baseados no operador e termos de texto gratuitos não são interpretadas. Por exemplo, a consulta "p0 priority cases severity:s0" não seria suportada porque "p0 priority cases" é um termo de texto gratuito enquanto "severity:s0" é um termo baseado no operador.
- A estratégia de interpretação de consulta sempre combina os resultados interpretados com resultados comuns (não interpretados, classificados por relevância). Ela não executa uma substituição de página inteira dos resultados.