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 baseada no operador. 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 o 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 de forma consistente 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 confiança menor os mistura com resultados de palavras-chave padrão.

Exemplo de interpretação de consulta

Considere um banco de dados que contém informações sobre 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

Para este exemplo, a interpretação de consulta:

  • Determina no esquema que os objetos de nível superior são objecttype:movies.
  • Verifica os documentos para identificar onde "ação" ocorre. Se ele aparecer principalmente em um campo genre, a confiança aumenta de que ele é um valor de propriedade para esse campo.

A interpretação resultante é: actor:"tom hanks" genre:action objecttype:movies

A interpretação de consulta é automática para todos os usuários, mas você pode otimizá-la estruturando seu esquema conforme descrito nas seções a seguir.

Estruturar seu esquema para interpretação de consulta

A otimização do esquema garante que você se beneficie da interpretação de consulta.

Ativar interpretações de nome de exibição

A interpretação de consulta 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 de filme:

{
  "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 thriller" -> objecttype:movies genre:(action OR thriller)
  • "filmes de categoria de 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 de data e numéricas. Para ativar a classificação, defina isSortable.

Este exemplo ativa estas 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
  • "filmes com duração menor que 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 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 origem de dados:
    • Público do domínio.
    • Público da origem de dados.
    • A maioria dos documentos compartilha a mesma ACL herdada.
  • Nomes de operadores compartilhados (por exemplo, priority e severity usando 0 a 3) diminuem a 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.
  • Termos combinados de operador e texto livre (por exemplo, "p0 cases severity:s0") não são interpretados.
  • Os resultados são sempre combinados com resultados classificados por relevância.