Estruturar um esquema para interpretação ideal de consultas

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.

Visão geral da interpretação de consulta
Figura 1. Interpretação de consulta

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:

  1. Preencha updateTime em ItemMetadata para usar before e after.
  2. Preencha mimeType em ItemMetadata para 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, priority e severity usando 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 source nã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.