Um esquema do Google Cloud Search é uma estrutura JSON que define objetos, propriedades e opções para indexar e consultar dados. O conector de conteúdo usa o esquema registrado para estruturar e indexar os dados do repositório.
Para criar um esquema, forneça um objeto de esquema JSON à API. É necessário registrar um esquema para cada repositório antes de indexar os dados.
Este documento aborda os conceitos básicos da criação de esquemas. Para otimizar a experiência de pesquisa, consulte Melhorar a qualidade da pesquisa.
crie um esquema
Siga estas etapas para criar seu esquema do Cloud Search:
- Identificar o comportamento esperado do usuário
- Inicializar uma fonte de dados
- Definir os objetos
- Definir propriedades de objetos
- Registrar o esquema
- Indexar seus dados
- Testar o esquema
- Ajustar o esquema
Identificar o comportamento esperado do usuário
Prever como os usuários pesquisam ajuda a definir sua estratégia de esquema. Em um banco de dados de filmes, os usuários podem pesquisar "filmes estrelados por Robert Redford". Seu esquema precisa aceitar consultas de filmes com um ator específico.
Para alinhar seu esquema ao comportamento do usuário:
- Avalie consultas diversas de usuários diferentes.
- Identifique conjuntos de dados lógicos, ou objetos, como um "filme".
- Identifique propriedades (atributos) como título ou data de lançamento.
- Identifique valores válidos para propriedades, como "Os Caçadores da Arca Perdida".
- Determine as necessidades de ordenação e classificação, como ordem cronológica ou classificações do público.
- Identifique propriedades de contexto, como função de trabalho, para melhorar as sugestões de preenchimento automático.
- Liste esses objetos, propriedades e valores de exemplo. Use essa lista para definir opções de operador.
Inicializar uma origem de dados
Uma fonte de dados representa os dados de um repositório indexado armazenados no Google Cloud. Consulte Gerenciar fontes de dados de terceiros. Quando um usuário clica em um resultado, o Cloud Search o direciona para o item usando o URL da solicitação de indexação.
Definir os objetos
O objeto é a unidade fundamental de um esquema. Estruturas lógicas como "filme" ou "pessoa" são objetos. Cada objeto tem propriedades como título, duração ou nome.
Um esquema é uma lista de
definições de objetos na tag objectDefinitions.
{
"objectDefinitions": [
{ "name": "movie" },
{ "name": "person" }
]
}
Use nomes exclusivos para cada objeto, como movie. O serviço de esquema usa esses nomes como chaves. Consulte ObjectDefinition.
Definir propriedades de objetos
Defina propriedades, como título e data de lançamento, na seção propertyDefinitions. Use
options
para
freshnessOptions
(classificação) e
displayOptions
(rótulos da interface).
{
"objectDefinitions": [{
"name": "movie",
"propertyDefinitions": [
{
"name": "movieTitle",
"isReturnable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": { "operatorName": "title" }
},
"displayOptions": { "displayLabel": "Title" }
},
{
"name": "releaseDate",
"isReturnable": true,
"isSortable": true,
"datePropertyOptions": {
"operatorOptions": {
"operatorName": "released",
"lessThanOperatorName": "releasedbefore",
"greaterThanOperatorName": "releasedafter"
}
}
}
]
}]
}
Uma PropertyDefinition inclui:
- Uma string
name. - Opções independentes de tipo (por exemplo,
isReturnable). - Um tipo e opções específicas do tipo (por exemplo,
textPropertyOptions). operatorOptionspara operadores de pesquisa.displayOptionspara rótulos da interface.
É possível reutilizar nomes de propriedades em diferentes objetos. Por exemplo, movieTitle
pode aparecer em um objeto movie e na filmografia de um objeto person.
Adicionar opções independentes de tipo
PropertyDefinition inclui opções booleanas para configurar a funcionalidade de pesquisa de uma propriedade, independente do tipo dela. Por padrão, essas opções são definidas como false e precisam ser definidas como true para serem usadas.
isReturnable: definido comotruese os dados da propriedade precisarem ser retornados nos resultados da pesquisa usando a API Query. É possível usar propriedades não retornáveis para pesquisar ou classificar sem que elas apareçam nos resultados.isRepeatable: defina comotruese a propriedade puder ter vários valores. Por exemplo, um filme tem uma data de lançamento, mas vários atores.isSortable: defina comotruese a propriedade puder ser usada para classificação. Não pode sertrueseisRepeatablefortrueou se a propriedade estiver dentro de um subobjeto repetível.isFacetable: definido comotruese a propriedade puder ser usada para gerar refinamentos (atributos usados para refinar os resultados da pesquisa).- Exige que
isReturnablesejatrue. - Disponível apenas para propriedades de enumeração, booleanas e de texto.
- Exige que
isWildcardSearchable: defina comotruepara permitir que os usuários façam pesquisas com caracteres curinga nessa propriedade. Essa opção só está disponível em propriedades de texto e o comportamento dela depende da configuraçãoexactMatchWithOperator:- Se
exactMatchWithOperatorfortrue: o valor de texto será tratado como um único token. Uma consulta comoscience-*corresponde ao valorscience-fiction. - Se
exactMatchWithOperatorforfalse: o valor de texto é tokenizado. Uma consulta comosci*oufi*corresponde ascience-fiction, masscience-*não.
- Se
Definir tipo
Defina o tipo de dados definindo o objeto de opções de propriedade apropriado (por exemplo,
textPropertyOptions). Use enums (enumPropertyOptions) se você souber todos os valores possíveis. Uma propriedade pode ter apenas um tipo de dados.
Definir opções do operador
operatorOptions descreva como uma propriedade funciona como um operador de pesquisa.
Todo operatorOptions precisa de um operatorName (por exemplo, title). Esse é o parâmetro que os usuários digitam nas consultas (por exemplo, title:titanic). Use nomes intuitivos
e mostre-os aos usuários.
É possível compartilhar um operatorName entre propriedades do mesmo tipo. As consultas que usam esse nome recuperam resultados de todas as propriedades correspondentes.
As propriedades classificáveis podem incluir lessThanOperatorName e greaterThanOperatorName para consultas de comparação. As propriedades de texto podem usar
exactMatchWithOperator para tratar todo o valor como um único token.
Adicionar opções de exibição
A seção displayOptions opcional contém um displayLabel. É um rótulo fácil de usar que aparece nos resultados da pesquisa.
Adicionar operadores de filtragem de sugestões
Use suggestionFilteringOperators[] para definir uma propriedade que filtra sugestões de preenchimento automático (por exemplo, filtrar sugestões de filmes pelo gênero preferido de um usuário). Só é possível definir um filtro de sugestões.
Registrar o esquema
Registre seu esquema com o serviço de esquema usando o ID da fonte de dados. Envie uma solicitação UpdateSchema:
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
Use validateOnly: true para testar seu esquema sem registrá-lo.
Indexar os dados
Depois do registro, preencha a fonte de dados usando chamadas de indexação, geralmente com um conector.
Exemplo de solicitação de indexação:
{
"name": "datasource/<data_source_id>/items/titanic",
"metadata": {
"title": "Titanic",
"objectType": "movie"
},
"structuredData": {
"object": {
"properties": [{
"name": "movieTitle",
"textValues": { "values": ["Titanic"] }
}]
}
},
"itemType": "CONTENT_ITEM"
}
Testar o esquema.
Teste com um repositório pequeno antes da produção. Crie uma ACL que limite os resultados a um usuário de teste.
- Consulta genérica: pesquise uma string (por exemplo, titanic") para ver todos os itens correspondentes.
- Consulta de operador: use um operador (por exemplo,
actor:Zane) para limitar os resultados.
Ajustar o esquema
Monitore o feedback dos usuários e ajuste seu esquema. Você pode indexar novos campos ou renomear operadores para que sejam mais intuitivos.
Indexar novamente após uma mudança de esquema
Não é necessário reindexar para que as mudanças em:
- Nomes de operador
- Limites numéricos.
- Classificação ordenada.
- Opções de atualização ou exibição.
É necessário reindexar para:
- Adicionar ou remover propriedades ou objetos.
- Mudando
isReturnable,isFacetableouisSortableparatrue. - Marcar uma propriedade
isSuggestable.
Alterações de propriedade não permitidas
Não são permitidas mudanças que corrompam o índice ou causem resultados inconsistentes, incluindo:
- Tipo de dados ou nome da propriedade.
- Configurações de
exactMatchWithOperatorouretrievalImportance.
Fazer uma alteração complexa no esquema
Para fazer uma mudança não permitida, migre as propriedades de uma definição antiga para uma nova:
- Adicione uma nova propriedade com um nome diferente ao esquema.
- Registre o esquema com as propriedades novas e antigas.
- Faça o preenchimento do índice usando apenas a nova propriedade.
- Exclua a propriedade antiga do esquema.
- Atualize o código da consulta para usar o novo nome da propriedade.
O Cloud Search registra itens excluídos por 30 dias para evitar problemas de reutilização.
Limitações de tamanho
- Máximo de 10 objetos de nível superior.
- Profundidade máxima de 10 níveis.
- No máximo 1.000 campos por objeto (incluindo campos aninhados).
Próximas etapas
- Crie uma interface de pesquisa.
- Melhorar a qualidade da pesquisa.
- Estrutura de um esquema para a interpretação ideal de consultas.
- Definir sinônimos.