Qualidade da pesquisa refere-se à qualidade dos resultados da pesquisa em termos de classificação e recall, conforme percebido pelo usuário que faz a consulta.
Classificação refere-se à ordenação de itens, e recall, ao número de itens relevantes recuperados. Um item, também chamado de documento, é qualquer conteúdo digital que o Google Cloud Search possa indexar. Os tipos de itens incluem documentos do Microsoft Office, arquivos PDF, uma linha em um banco de dados, URLs exclusivos e assim por diante. Um item é composto pelo seguinte:
- Metadados estruturados
- Conteúdo indexável
- ACLs
O Cloud Search usa vários sinais para recuperar e classificar os resultados da consulta de pesquisa, ou seja, os itens resultantes de uma consulta. É possível influenciar esses sinais por meio de configurações no esquema, no conteúdo e nos metadados do item durante a indexação e no app de pesquisa. O objetivo deste documento é ajudar a melhorar a qualidade da pesquisa por meio da modificação desses influenciadores de sinal.
Para um resumo das configurações recomendadas e opcionais, consulte a seção Resumo das configurações de qualidade da pesquisa recomendadas e opcionais.
Influenciar a pontuação de utilidade
Utilidade refere-se à relevância de um resultado da pesquisa em relação aos termos da consulta original. Ela é calculada com base nos critérios a seguir:
- A importância de cada termo de consulta
- O número de ocorrências, ou seja, o número de vezes que um termo de consulta aparece no conteúdo ou nos metadados do item
- O tipo de correspondência do termo da consulta e das variantes dele com um item indexado no Cloud Search
Para influenciar a pontuação de utilidade de uma propriedade de texto, defina RetrievalImportance
na propriedade de texto no seu esquema. Uma correspondência em uma propriedade com RetrievalImportance
alto resulta em uma pontuação mais alta em comparação com uma correspondência em uma propriedade com RetrievalImportance
baixo.
Por exemplo, suponha uma fonte de dados com as características a seguir:
- A fonte de dados é usada para armazenar histórico de bugs de software.
- Cada bug tem um nome, uma descrição e uma prioridade.
A maioria dos usuários consultaria essa fonte de dados usando o nome do bug. Portanto, defina RetrievalImportance
no nome como HIGHEST
no esquema.
Por outro lado, a maioria dos usuários não pode consultar essa fonte de dados usando a descrição do
bug. Portanto, defina RetrievalImportance
na descrição como DEFAULT
.
Veja a seguir um esquema de amostra que contém as configurações de RetrievalImportance
.
{
"objectDefinitions": [
{
"name": "issues",
"propertyDefinitions": [
{
"name": "summary",
"textPropertyOptions": {
"retrievalImportance": {
"importance": HIGHEST
}
}
},
{
"name": "description",
"textPropertyOptions": {
"retrievalImportance": {
"importance": DEFAULT
}
}
},
{
"name": "label",
"isRepeatable": true,
"textPropertyOptions": {
"retrievalImportance": {
"importance": DEFAULT
}
}
},
{
"name": "comments",
"textPropertyOptions": {
"retrievalImportance": {
"importance": DEFAULT
}
}
},
{
"name": "project",
"textPropertyOptions": {
"retrievalImportance": {
"importance": HIGH
}
}
},
{
"name": "duedate",
"datePropertyOptions": {
}
},
...
]
}
]
}
No caso de documentos HTML, tags como <title>
e <h1>
e
configurações de formatação, como tamanho da fonte e negrito, são usadas para determinar a
importância de vários termos. Se
ContentFormat
for TEXT
,
ItemContent
terá importância de recuperação DEFAULT
e, se for HTML, a importância da recuperação
será determinada com base nas propriedades HTML.
Influenciar a atualização
A atualização mede quando um item foi modificado e é determinada
pelas propriedades createTime
e updateTime
no
ItemMetadata
.
Os itens mais antigos são rebaixados nos resultados da pesquisa.
É possível influenciar como a atualização é calculada para um objeto ajustando freshnessProperty
e freshnessDuration
de FreshnessOptions
no esquema.
O freshnessProperty
permite que você use uma propriedade de data ou carimbo de data/hora para calcular a atualização em vez do updateTime
padrão.
No exemplo anterior de um sistema de rastreamento de bugs de software, a data de vencimento pode
ser usada como um freshnessProperty
para que itens com uma data de vencimento mais próxima da
data atual sejam considerados "mais atualizados" e tenham uma classificação maior. Veja a seguir um exemplo de esquema que contém as configurações de freshnessProperty
:
{
"objectDefinitions": [
{
"name": "issues",
"options": {
"freshnessOptions": {
"freshnessProperty": "duedate"
}
},
"propertyDefinitions": [
{
"name": "summary",
"textPropertyOptions": {
"retrievalImportance": {
"importance": HIGHEST
}
}
},
{
"name": "duedate",
"datePropertyOptions": {
}
},
...
]
}
]
}
Use o freshnessDuration
para identificar quando um item é considerado desatualizado.
Por exemplo, é possível ter uma fonte de dados que não é indexada regularmente ou cuja atualização não deve influenciar a classificação. Para isso,
especifique um valor alto para freshnessDuration
.
Suponha que você tenha uma fonte de dados com informações de perfil de funcionários. Nesse
cenário, talvez você queira uma freshnessDuration
alta porque as mudanças nas informações
do funcionário geralmente não são relevantes para a classificação dele. Veja a seguir um exemplo de esquema que contém a configuração de freshnessDuration
:
{
"objectDefinitions": [
{
"name": "people",
"options": {
"freshnessOptions": {
"freshnessDuration": "315360000s", # 100 years
}
},
}
]
}
Também é possível definir freshnessDuration
como um valor muito baixo para fontes de dados
com conteúdo alterado rapidamente, como uma fonte com artigos de notícias.
Nesse cenário, os documentos criados ou modificados mais recentemente serão mais relevantes.
Veja a seguir um esquema de amostra contendo a configuração freshnessDuration
para uma fonte de dados com conteúdo que muda com frequência:
{
"objectDefinitions": [
{
"name": "news",
"options": {
"freshnessOptions": {
"freshnessDuration": "259200s", # 3 days
}
},
}
]
}
Influenciar a qualidade
A qualidade é uma medida da precisão e utilidade de um item. Uma fonte de dados pode conter vários documentos semanticamente semelhantes, cada um com um nível diferente de qualidade. É possível especificar um valor de qualidade entre 0 e
1 usando SearchQualityMetadata
.
Itens com valores mais altos têm uma classificação mais alta em relação àqueles com valores mais baixos. Use essa configuração somente se for necessário influenciar ou melhorar a qualidade de um item com informações não fornecidas ao Cloud Search.
Por exemplo, imagine uma fonte de dados contendo documentos de benefícios para funcionários. É possível usar SearchQualityMetadata
para melhorar a classificação de documentos de autoria de funcionários de Recursos Humanos em relação a documentos de outros funcionários.
Confira a seguir um esquema de amostra contendo configurações de SearchQualityMetadata
para
problemas em um sistema de rastreamento de bugs:
{
"name": "datasources/.../items/issue1",
"acl": {
...
},
"metadata": {
"title": "Issue 1"
"objectType": "issues"
},
...
}
{
"name": "datasources/.../items/issue2",
"acl": {
...
},
"metadata": {
"title": "Issue 2"
"objectType": "issues"
"searchQualityMetadata": {
"quality": 0.5
}
},
...
}
{
"name": "datasources/.../items/issue3",
"acl": {
...
},
"metadata": {
"title": "Issue 3"
"objectType": "issues"
"searchQualityMetadata": {
"quality": 1
}
},
...
}
De acordo com esse esquema, quando um usuário pesquisa o termo "issue", o "Issue 3", que tem qualidade 1 no esquema, é classificado como superior ao "Issue 2", cujo valor de qualidade é 0,5, e ao "Issue 1", cuja qualidade padrão será 0 se nenhum valor for especificado para ele.
Influenciar a classificação usando o tipo de campo
O Cloud Search permite influenciar a classificação com base no valor das propriedades "enum" ou "integer". Para cada número inteiro ou propriedade enum, um
OrderedRanking
pode ser especificado. Essa configuração tem os seguintes valores:
NO_ORDER
(padrão): a propriedade não afeta a classificação.ASCENDING
: itens com valores mais altos dessa propriedade "enum" ou "integer" têm uma classificação maior em comparação àqueles com valores menores.DESCENDING
: itens com valores mais baixos dessa propriedade "enum" ou "integer" têm uma classificação maior em comparação àqueles com valores mais altos.
Por exemplo, suponha que cada bug em um sistema de rastreamento de bugs tenha uma propriedade "enum" para armazenar a prioridade do bug como HIGH
(1), MEDIUM
(2) ou LOW
(3). Nesse cenário, definir um OrderedRanking
como DESCENDING
aumenta
a classificação dos bugs de prioridade HIGH
em comparação com os bugs de prioridade LOW
.
Confira a seguir um esquema de amostra contendo configurações de OrderedRanking
para problemas em um
sistema de rastreamento de bugs:
{
"objectDefinitions": [
{
"name": "issues",
"options": {
"freshnessOptions": {
"freshnessProperty": "duedate",
}
},
"propertyDefinitions": [
{
"name": "summary",
"textPropertyOptions": {
"retrievalImportance": {
"importance": HIGHEST
}
}
},
{
"name": "duedate",
"datePropertyOptions": {
}
},
{
"name": "priority",
"enumPropertyOptions": {
"possibleValues": [
{
"stringValue": "HIGH",
"integerValue": 1
},
{
"stringValue": "MEDIUM",
"integerValue": 2
},
{
"stringValue": "LOW",
"integerValue": 3
}
],
"orderedRanking": DESCENDING,
}
},
...
]
}
]
}
Um sistema de rastreamento de bugs também pode ter uma propriedade "integer" chamada votes
, que é usada para
coletar feedback dos usuários sobre a importância relativa de um bug. Você pode usar
a propriedade votes
para influenciar a classificação, atribuindo maior importância aos
bugs com mais votos. Nesse caso, você pode especificar
OrderedRanking
como ASCENDING
para a propriedade votes
. Assim, os problemas com mais votos
tenham uma classificação maior. Veja a seguir um esquema de amostra contendo configurações de OrderedRanking
para problemas em um sistema de rastreamento de bugs:
{
"objectDefinitions": [
{
"name": "issues",
"propertyDefinitions": [
{
"name": "summary",
"textPropertyOptions": {
"retrievalImportance": {
"importance": HIGHEST
}
}
},
{
"name": "description",
"textPropertyOptions": {
"retrievalImportance": {
"importance": DEFAULT
}
}
},
{
"name": "votes",
"integerPropertyOptions": {
"orderedRanking": ASCENDING,
"minimumValue": 0,
"maximumValue": 1000,
}
},
...
]
}
]
}
Influenciar a classificação por meio de expansão de consulta
Expansão de consulta refere-se à expansão dos termos na consulta usando sinônimos e ortografia para recuperar resultados melhores.
Usar sinônimos para influenciar os resultados da pesquisa
O Cloud Search utiliza sinônimos inferidos de conteúdo público da Web para expandir os termos da consulta. Também é possível definir sinônimos personalizados para capturar a terminologia específica da organização, como acrônimos comuns ou terminologia específica do setor.
Os sinônimos personalizados podem ser definidos em uma fonte de dados ou como uma fonte separada. Por padrão, os sinônimos são aplicados a todas as fontes de dados em todos os aplicativos de pesquisa. No entanto, você pode agrupar sinônimos por fonte de dados e app de pesquisa. Para informações sobre como definir sinônimos personalizados, incluindo agrupamento por aplicativo de pesquisa, consulte Definir sinônimos.
Usar a ortografia para influenciar os resultados da pesquisa
O Cloud Search fornece sugestões de ortografia com base em modelos criados com os dados públicos da Pesquisa Google. Se o Cloud Search detectar um erro de digitação no contexto de uma consulta, ele retornará a consulta sugerida no SpellResult
.
A ortografia recomendada pode ser exibida para o usuário como uma sugestão. Por exemplo, o usuário pode digitar incorretamente o termo "funcionrio" e receber a sugestão "Você quis dizer funcionário?"
O Cloud Search também usa correções ortográficas como sinônimos para recuperar documentos que podem ser perdidos devido a um erro de ortografia.
Como influenciar a classificação por meio das configurações do app de pesquisa
Conforme mencionado no artigo Introdução ao Google Cloud Search, um app de pesquisa é um grupo de configurações que, quando associadas a uma interface de consulta, fornecem informações contextuais. As configurações abaixo permitem influenciar a classificação por meio desse app:
- Configuração de pontuação
- Configuração de fonte
As duas seções a seguir explicam como essas configurações são úteis para influenciar a classificação.
Ajustar a configuração de pontuação
Para cada app de pesquisa, é possível especificar uma ScoringConfig usada para controlar alguns sinais durante a classificação. No momento, é possível desativar atualização e personalização.
Se a atualização for desativada, ela será desabilitada para todas as fontes de dados listadas no app de pesquisa, independentemente das opções especificadas no esquema da fonte. Da mesma forma, se a personalização for desativada, o aumento do proprietário e o aumento da interação não vão afetar a classificação.
Para instruções detalhadas sobre como definir essa configuração, consulte Personalizar a experiência de pesquisa no Cloud Search.
Ajustar a configuração de fonte
A configuração de fonte permite especificar configurações no nível da fonte de dados em um app de pesquisa. As configurações a seguir são aceitas:
- Importância da fonte
- Agrupamento
Definir a importância da fonte
Importância da fonte refere-se à importância relativa de uma fonte de dados em um app de pesquisa. Essa configuração pode ser especificada no campo SourceImportance
em
SourceScoringConfig
.
Os itens de uma fonte de dados com importância HIGH
têm uma classificação maior em comparação àqueles de uma fonte com importância DEFAULT
ou LOW
. Use essa configuração para influenciar a classificação nos casos em que os usuários preferem resultados de determinadas fontes.
Por exemplo, imagine um portal de suporte ao produto contendo dados de solução de problemas internos e externos. Nesse cenário, talvez você queira configurar o app de pesquisa para priorizar os resultados da fonte de dados interna.
Para instruções detalhadas sobre como definir essa configuração, consulte Personalizar a experiência de pesquisa no Cloud Search.
Definir agrupamento
Agrupamento refere-se ao número máximo de resultados que podem ser retornados de uma fonte de dados em um app de pesquisa. Esse valor
pode ser controlado usando o campo numResults
em
SourceCrowdingConfig
.
Ele é padronizado como 3, o que significa que, se mostramos três resultados de uma fonte de dados, o Cloud Search começa a exibir resultados de outras fontes. Os itens da primeira fonte de dados são reconsiderados somente se todas as fontes tiverem atingido o limite de agrupamento ou se não houver mais resultados em outras.
Essa configuração é útil para garantir a diversidade dos resultados da pesquisa e impedir que uma fonte de dados domine a página de resultados.
Para instruções detalhadas sobre como definir essa configuração, consulte Personalizar a experiência de pesquisa no Cloud Search.
Influenciar a classificação por meio da personalização
Personalização refere-se à exibição de resultados de pesquisa personalizados com base no usuário que acessa a página. É possível influenciar a classificação priorizando os itens com base nos critérios a seguir:
- Propriedade do item
- Interação do item
- Cliques do usuário
- Idioma do item
As três seções a seguir abordam como influenciar a qualidade da pesquisa com base nesses critérios.
Influenciar a classificação com base na propriedade do item
A propriedade do item aumenta a classificação de itens pertencentes ao usuário que realiza a consulta de pesquisa. Cada item tem um
ItemAcl
com um campo owners
. Se o usuário que estiver executando uma consulta for o proprietário de um item, então, por padrão, a classificação desse item será maior. É possível desativar a personalização no app de pesquisa.
Aumentar a classificação com base na interação do item
A interação do item aumenta a classificação de itens com os quais o usuário da consulta de pesquisa interagiu (visualizou, comentou, editou e assim por diante).
Os sinais de interação do item são recebidos automaticamente para produtos do Google Workspace, como o Drive e o Gmail. Para outros produtos, é possível fornecer os dados de interação no nível do item, incluindo o tipo de interação (exibição, edição), o carimbo de data/hora da interação e o usuário que interagiu com o item. Observe que os itens com interações recentes têm uma classificação mais alta.
Aumentar a classificação com base nos cliques dos usuários
O Cloud Search coleta os cliques nos resultados da pesquisa atual e os usa para melhorar a classificação em pesquisas futuras, impulsionando os itens clicados anteriormente pelo mesmo usuário.
Influenciar a classificação por meio da interpretação de consultas
O recurso interpretação de consultas 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 palavras-chave mínimas e ainda receba resultados precisos. Para mais informações, consulte Estrutura de um esquema para a interpretação ideal de consultas.
Aumentar a classificação com base no idioma do item
O idioma rebaixa a classificação de itens em idiomas que não correspondem ao idioma da consulta. Os fatores abaixo afetam a classificação de itens com base no idioma:
A linguagem da consulta. O idioma detectado automaticamente da consulta de pesquisa ou o
languageCode
especificado noRequestOptions
.Se você criar uma interface de pesquisa personalizada, defina
languageCode
como o idioma da interface do usuário ou a preferência de idioma, por exemplo, o idioma do navegador da Web ou da página da interface de pesquisa. O idioma de consulta detectado automaticamente tem precedência sobre olanguageCode
. Assim, a qualidade da pesquisa não é comprometida quando um usuário digita uma consulta em um idioma diferente da interface dele.Idioma do item. O
contentLanguage
definido emItemMetadata
no momento do índice ou o idioma do conteúdo detectado automaticamente pelo Cloud Search.Se o
contentLanguage
de um documento for deixado em branco no momento do índice e oItemContent
for preenchido, o Cloud Search tentará detectar o idioma usado noItemContent
e o armazenará internamente. O idioma detectado automaticamente não é adicionado ao campocontentLanguage
.
Se os idiomas da consulta e do item corresponderem, nenhum rebaixamento por idioma será aplicado. Se essas configurações não corresponderem, o item será rebaixado. O rebaixamento de idioma não é aplicado a documentos em que contentLanguage
está vazio e o Cloud Search não conseguiu detectar o idioma automaticamente. Como resultado, a classificação de um documento não será afetada se o Cloud Search não conseguir detectar o idioma dele.
Aumentar a classificação com base no contexto do item
Você pode aumentar a classificação de itens que são mais relevantes para o contexto
de uma consulta de pesquisa. O contexto
(contextAttributes
)
é um conjunto de atributos nomeados que pode ser especificado durante a indexação e na
solicitação de pesquisa para fornecer contexto a uma consulta de pesquisa específica.
Por exemplo, suponha que um item, como um documento de benefícios de funcionário, seja mais
relevante no contexto de uma Location
e um Department
, como uma cidade
(San Francisco
), estado (California
), país (USA
) e Department
(Engineering
). Nesse caso, é possível indexar o item com os seguintes
atributos nomeados:
{
...
"metadata": {
"contextAttributes": [
{
name: "Location"
values: [
"San Francisco",
"California",
"USA"
],
},
{
name: "Department"
values: [
"Engineering"
],
}
],
},
...
}
Quando o usuário insere uma consulta de pesquisa de "benefícios" na interface de pesquisa, é possível incluir as informações de localização e o departamento do usuário na solicitação de pesquisa. Por exemplo, esta é uma solicitação de pesquisa que contém informações de local e departamento para um engenheiro em Chicago:
{
...
"contextAttributes": [
{
name: "Location"
values: [
"Chicago",
"Illinois",
"USA"
],
},
{
name: "Department"
values: [
"Engineering"
],
}
],
...
}
Como o item indexado e a solicitação de pesquisa contêm os atributos de "Department=Engineering" e "Location=USA", o item indexado (um documento de benefício para funcionários) aparece em posições mais altas nos resultados da pesquisa.
Agora, suponha que outro usuário, um engenheiro na Índia, insira uma consulta de pesquisa de "benefícios" na interface de pesquisa. Confira uma solicitação de pesquisa que contém as informações de localização e departamento:
{
...
"contextAttributes": [
{
name: "Location"
values: [
"Bengaluru",
"Karnataka",
"India"
],
},
{
name: "Department"
values: [
"Engineering"
],
}
],
...
}
Como o item indexado e a solicitação de pesquisa só contêm o atributo "Department=Engineering", o item indexado aparece apenas um pouco mais acima nos resultados da pesquisa (em comparação com a primeira consulta de pesquisa de "benefícios" inserida por um engenheiro em Chicago, Illinois, EUA).
Veja a seguir alguns exemplos de contextos que podem ser usados para aumentar a classificação:
- Local: os itens podem ser mais relevantes para os usuários em um local específico, como um edifício, uma cidade, um país ou uma região.
- Função: os itens podem ser mais relevantes para os usuários em uma função específica, como redator técnico ou engenheiro.
- Departamento: os itens podem ser mais relevantes para determinados departamentos, como vendas ou marketing.
- Nível do cargo: os itens podem ser mais relevantes para determinados níveis de cargo, como diretor ou CEO.
- Tipo de funcionário: os itens podem ser mais relevantes para determinados tipos de funcionários, como os de meio período e em período integral.
- Tempo de atividade: os itens podem ser mais relevantes para o tempo de permanência de um funcionário, como uma nova contratação.
Como influenciar a classificação por meio da popularidade do item
O Cloud Search impulsiona os itens mais procurados na classificação, ou seja, os itens que receberam cliques em consultas de pesquisa recentes.
Como influenciar a classificação por meio de aumento de cliques
O Cloud Search coleta os cliques nos resultados da pesquisa atual e os usa para melhorar a classificação em pesquisas futuras, impulsionando os itens mais em alta em uma determinada consulta.
Resumo das configurações de qualidade de pesquisa recomendadas e opcionais
A tabela a seguir lista todas as configurações de qualidade da pesquisa recomendadas e opcionais. Essas recomendações ajudarão a aproveitar ao máximo os modelos de classificação do Cloud Search.
Configuração | Local | Recomendada/opcional | Detalhes |
---|---|---|---|
Configurações do esquema | |||
Campo ItemContent | ItemContent | Recomendados | Ao criar ou atualizar o esquema, preencha o conteúdo não estruturado de um item. Este campo é usado para gerar snippets. |
Campo RetrievalImportance | RetrievalImportance | Recomendados | Ao criar ou atualizar um esquema, defina este campo para propriedades de texto que sejam claramente importantes ou úteis. |
FreshnessOptions | FreshnessOptions | Opcional | Ao criar ou atualizar um esquema, defina este campo para garantir que os itens não sejam rebaixados devido a dados incorretos ou ausentes. |
Configurações de indexação | |||
createTime /updateTime | ItemMetadata | Recomendados | Preencha durante a indexação de um item. |
contentLanguage | ItemMetadata | Recomendados | Preencha durante a indexação de um item. Se ausente, o Cloud Search vai tentar detectar o idioma usado na ItemContent . |
Campo owners | ItemAcl() | Recomendados | Preencha durante a indexação de um item. |
Sinônimos personalizados | Esquema _dictionaryEntry | Recomendados | Defina no nível da fonte de dados ou como uma fonte separada durante a indexação. |
Campo quality | SearchQualityMetadata | Opcional | Defina a qualidade durante a indexação para fornecer um aumento base de qualidade em comparação com outros itens semanticamente semelhantes. Definir esse campo para todos os itens em uma fonte de dados anula o efeito dele. |
Dados de interação em nível de item | interaction | Opcional | Se a fonte de dados registrar e fornecer acesso às interações do usuário, preencha as interações de cada item durante a indexação. |
Propriedades inteiro/enum | OrderedRanking | Opcional | Quando a ordem dos itens for relevante, especifique a classificação ordenada para propriedades "integer" e "enum" durante a indexação. |
Configurações do app de pesquisa | |||
Personalization=false | ScoringConfig ou usando a interface do administrador do Cloud Search | Recomendados | Ao criar ou atualizar o app de pesquisa. Forneça as informações corretas sobre o proprietário, conforme descrito em "Como influenciar a classificação por meio da personalização". |
Campo SourceImportance | SourceCrowdingConfig | Opcional | Defina este campo para influenciar os resultados de determinadas fontes de dados. |
Campo numResults | SourceCrowdingConfig | Opcional | Defina este campo para controlar a diversidade de resultados. |
Próximas etapas
Veja a seguir algumas das próximas etapas:
Estruture um esquema para a interpretação ideal de consultas.
Saiba como aproveitar o esquema
_dictionaryEntry
para definir sinônimos de termos comumente usados na sua empresa. Para usar o esquema_dictionaryEntry
, consulte Definir sinônimos.