A interpretação de consulta do Cloud Search converte automaticamente operadores e filtros na consulta de um usuário em uma consulta estruturada e baseada em operadores. O recurso usa operadores definidos no esquema e documentos indexados para deduzir a intenção da consulta. Isso permite que os usuários pesquisem com um mínimo de palavras-chave e recebam resultados precisos.
A apresentação dos resultados depende da confiança. A confiança aumenta quando as strings de consulta aparecem consistentemente em campos de esquema específicos (por exemplo, "Tom Hanks"
em um campo actors). A confiança diminui quando as strings aparecem em prosa geral. A alta confiança mostra apenas resultados interpretados, enquanto a baixa confiança os mistura com resultados de palavras-chave padrão.
Exemplo de interpretação de consulta
Considere um banco de dados com informações de filmes. A Figura 1 mostra um exemplo de consulta de pesquisa e a interpretação dela.
Neste exemplo, a interpretação de consulta:
- Determina pelo esquema que os objetos de nível superior são
objecttype:movies. - Verifica documentos para identificar onde "ação" ocorre. Se ele aparecer principalmente em um campo
genre, a confiança de que é um valor de propriedade para esse campo aumenta.
A interpretação resultante é:
actor:"tom hanks" genre:action objecttype:movies
A interpretação de consultas é automática para todos os usuários, mas é possível otimizá-la estruturando seu esquema conforme descrito nas seções a seguir.
Estruturar seu esquema para interpretação de consultas
Ao otimizar seu esquema, você aproveita a interpretação de consultas.
Ativar interpretações de nome de exibição
A interpretação de consultas usa objectDefinitions e propertyDefinitions para interpretar consultas. Crie nomes de exibição intuitivos usando
displayLabel
para propriedades,
objectDisplayLabel
para objetos e operatorName para operadores.
Este exemplo mostra nomes de exibição intuitivos para um objeto "movie":
{
"objectDefinitions": [{
"name": "movie",
"options": {
"displayOptions": { "objectDisplayLabel": "Films" }
},
"propertyDefinitions": [{
"name": "genre",
"isReturnable": true,
"textPropertyOptions": {
"operatorOptions": { "operatorName": "genre" }
},
"displayOptions": { "displayLabel": "Category" }
}]
}]
}
Esses nomes de exibição permitem interpretações como:
- "filmes de ação" ->
genre:action object:movies - "filmes com gênero de ação ou suspense" ->
objecttype:movies genre:(action OR thriller) - "filmes da categoria comédia" ->
genre:comedy objecttype:movies
Ativar interpretações de data, numéricas e de classificação
Defina lessThanOperatorName e greaterThanOperatorName em
IntegerOperatorOptions
para todas as propriedades numéricas e de data. Para ativar a classificação, defina isSortable.
Este exemplo ativa as seguintes opções:
{
"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"
}
}
}
]
}]
}
Essas configurações permitem interpretações como:
- "filmes lançados este ano" ->
objecttype:movies releasedafter:2019-1-1 releasedbefore:2019-12-31 - "movies with runtime less than 90" ->
objecttype:movies runtimelessthan:90
Ativar interpretação de operador reservado
Use operadores integrados, como type, before, after e objecttype:
- Preencha
updateTimeemItemMetadatapara usarbeforeeafter. - Preencha
mimeTypeemItemMetadatapara a detecção automática. Por exemplo, "vídeos de ação" lista documentos com tipos MIME de vídeo.
Limitações de interpretação de consulta
- Funciona apenas para estas ACLs de fonte de dados:
- Domínio público.
- Pública da fonte de dados.
- A maioria dos documentos compartilha a mesma ACL herdada.
- Nomes de operadores compartilhados (por exemplo,
priorityeseverityusando 0 a 3) menor confiança. - Por padrão, a interpretação usa letras minúsculas para valores de campo, a menos que você use
exactMatchWithOperator. - O operador
sourcenão é compatível. - Operador combinado e termos de texto livre (por exemplo, "p0 cases severity:s0") não são interpretados.
- Os resultados são sempre combinados com os classificados por relevância.