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 da propriedade de um texto,
defina RetrievalImportance
na propriedade de texto no seu esquema. Uma correspondência em uma propriedade com alta
RetrievalImportance
gera uma pontuação maior em comparação com uma correspondência em uma
propriedade com RetrievalImportance
baixa.
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. Assim, a
RetrievalImportance
dele seria configurada como HIGHEST
no esquema.
Por outro lado, talvez os usuários não possam consultar essa fonte de dados usando a descrição do
bug. Portanto, defina a RetrievalImportance
na descrição como DEFAULT
.
Confira 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, são usadas tags como <title>
e <h1>
e configurações de formatação como tamanho da fonte e negrito para determinar a importância de vários termos. Se o
ContentFormat
for TEXT
,
ItemContent
tiver importância de recuperação DEFAULT
e se for HTML, a importância de recuperação
será determinada com base nas propriedades HTML.
Influenciar a atualização
A atualização mede quando ocorreu a última modificação de um item 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 usar propriedades 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 uma freshnessProperty
. Assim, itens com uma data de vencimento mais próxima da data atual são considerados "mais atualizados" e recebem uma classificação maior. Confira a seguir um esquema de amostra 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 a 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 uma freshnessDuration
alta seja necessária, já que uma alteração nas informações
de um funcionário não será relevante para a classificação dele. Confira a seguir um esquema de amostra que contém a configuração 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 de dados que contém artigos de notícias.
Nesse cenário, os documentos criados ou modificados mais recentemente serão mais relevantes.
Confira a seguir um esquema de amostra que contém a configuração de freshnessDuration
de 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 que a classificação dos
documentos criados pelos funcionários de Recursos Humanos tenham uma classificação mais alta em relação aos documentos criados por 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 uma OrderedRanking
como DESCENDING
aumenta a
classificação dos bugs de prioridade HIGH
em comparação com os 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 uma importância maior aos
bugs com mais votos. Nesse caso, você pode especificar
OrderedRanking
como ASCENDING
para a propriedade votes
, para que os problemas com o maior número de votos
recebam uma classificação maior. Confira 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 origens de dados em todos os apps de pesquisa. No entanto, é possível agrupar sinônimos por fonte de dados e aplicativo 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 ortografia no contexto
de uma consulta, ele vai 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 a atualização e a 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 afetarão 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 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 de pesquisa atuais e os usa para melhorar a classificação de pesquisas futuras, aumentando 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 Estruturar 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 o
languageCode
como o idioma ou a preferência de idioma da interface do usuário (por exemplo, o idioma do navegador da Web ou da página da interface de pesquisa). O idioma da consulta detectado automaticamente tem precedência sobre olanguageCode
, para que a qualidade da pesquisa não seja comprometida quando um usuário digita uma consulta em um idioma diferente da interface.O idioma do item. O
contentLanguage
definido emItemMetadata
no momento da indexação ou o idioma do conteúdo detectado automaticamente pelo Cloud Search.Se o
contentLanguage
de um documento for deixado em branco no momento da indexação 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. A redução de idioma não é
aplicada 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 é
afetada se o Cloud Search não conseguir detectar o idioma.
Aumentar a classificação com base no contexto do item
É possível aumentar a classificação de itens mais relevantes para o contexto
de uma consulta de pesquisa. O contexto
(contextAttributes
)
é um conjunto de atributos nomeados que você pode especificar 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 para funcionários, seja mais
relevante no contexto de um Location
e Department
, como uma cidade
(San Francisco
), estado (California
), país (USA
) e um Department
(Engineering
). Nesse caso, você pode 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 "benefícios" na interface de pesquisa, você pode incluir as informações de local e departamento do usuário na solicitação de pesquisa. Por exemplo, aqui está uma solicitação de pesquisa contendo 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 "Department=Engineering" e "Location=USA", o item indexado (um documento de benefícios do funcionário) aparece mais alto 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 com as informações de local e departamento:
{
...
"contextAttributes": [
{
name: "Location"
values: [
"Bengaluru",
"Karnataka",
"India"
],
},
{
name: "Department"
values: [
"Engineering"
],
}
],
...
}
Como o item indexado e a solicitação de pesquisa somente contêm o atributo "Department=Engineering", o item indexado aparece um pouco mais alto nos resultados da pesquisa (em comparação com a primeira consulta de pesquisa "benefits" inserida por um engenheiro localizado em Chicago, Illinois, EUA).
Confira a seguir alguns exemplos de contextos que você pode usar para aumentar a classificação:
- Local: os itens podem ser mais relevantes para 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 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 de 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 funcionários em tempo parcial e em tempo integral.
- Função: os itens podem ser mais relevantes para a função de um funcionário, como uma nova contratação.
Influenciar a classificação com base na popularidade do item
O Cloud Search aumenta a posição dos itens mais populares na classificação, ou seja, dos itens que receberam cliques em consultas de pesquisa recentes.
Como influenciar a classificação com o Clickboost
O Cloud Search coleta os cliques nos resultados de pesquisa atuais e os usa para melhorar a classificação de pesquisas futuras, aumentando a visibilidade de itens populares para uma consulta específica.
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 | Recomendado | 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 | Recomendado | 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 | Recomendado | Preencha durante a indexação de um item. |
contentLanguage | ItemMetadata | Recomendado | Preencha durante a indexação de um item. Se ele estiver ausente, o Cloud Search vai tentar detectar o idioma usado no ItemContent . |
Campo owners | ItemAcl() | Recomendado | Preencha durante a indexação de um item. |
Sinônimos personalizados | Esquema _dictionaryEntry | Recomendado | 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. |
Pesquisar configurações do app | |||
Personalization=false | ScoringConfig ou usando a IU do administrador do Cloud Search | Recomendado | 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. |
A seguir
Veja a seguir algumas das próximas etapas:
Estrutura de um esquema para a interpretação ideal de consultas.
Saiba como aproveitar o esquema
_dictionaryEntry
para definir sinônimos para termos comumente usados em sua empresa. Para usar o esquema_dictionaryEntry
, consulte Definir sinônimos.