Melhorar a qualidade da pesquisa

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 do texto no esquema. Uma correspondência em uma propriedade com alta RetrievalImportance gera em uma pontuação maior se comparada a uma correspondência em uma propriedade com baixa RetrievalImportance.

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. 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, 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 terá importância de recuperação DEFAULT e, se for HTML, sua 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 em ItemMetadata. Os itens mais atualizados têm uma classificação maior.

É possível influenciar como a atualização é calculada para um objeto ajustando freshnessProperty e freshnessDuration de FreshnessOptions no esquema.

A freshnessProperty permite usar propriedades de data ou carimbo de data/hora para calcular a atualização em vez do updateTime.

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 serão considerados "mais atualizados" e terão uma classificação maior. Veja 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 que não influencia a classificação com sua atualizaçã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. Veja a seguir um esquema de amostra 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 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 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

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.

Veja 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", que tem valor de qualidade é 0,5, e ao "Issue 1", que terá qualidade padrão 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 àqueles de prioridade LOW. Veja 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. É possível usar a propriedade votes para influenciar a classificação, atribuindo uma importância maior aos bugs com mais votos. Nesse caso, é possível especificar OrderedRanking como ASCENDING para a propriedade votes, para que os problemas com mais votos recebam um aumento na classificação. 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. Eles são aplicados em todos os apps de pesquisa em um domínio, independentemente de onde o sinônimo está definido. Para informações sobre como definir sinônimos personalizados, consulte o artigo 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 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.

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á desativada 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, os aumentos do proprietário ou da interação não afetarão a classificação.

Para instruções passo a passo sobre como definir essa configuração, consulte Criar uma experiência de pesquisa personalizada.

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 passo a passo sobre como definir essa configuração, consulte Criar uma experiência de pesquisa personalizada.

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 forem mostrados três resultados de uma fonte de dados, o Cloud Search começará 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 fontes.

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 passo a passo sobre como definir essa configuração, consulte Criar uma experiência de pesquisa personalizada.

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
  • 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 de 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 G Suite, como Drive, Gmail e outros. 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.

Influenciar a classificação por meio da interpretação de consultas

O recurso interpretação de consulta 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 um mínimo de palavras-chave e, ao mesmo tempo, 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. A classificação de itens com base no idioma é afetada da seguinte forma:

  • O languageCode especificado em RequestOptions.
  • O idioma da consulta de pesquisa detectado automaticamente.
  • O idioma do item, ou seja, o contentLanguage em ItemMetadata ou o idioma detectado automaticamente, nessa ordem.

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.

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çãoLocalRecomendada/opcionalDetalhes
Configurações do esquema
Campo ItemContentItemContentRecomendadaAo criar ou atualizar o esquema, preencha o conteúdo não estruturado de um item. Este campo é usado para gerar snippets.
Campo RetrievalImportanceRetrievalImportanceRecomendadaAo criar ou atualizar um esquema, defina este campo para propriedades de texto que sejam claramente importantes ou úteis.
FreshnessOptionsFreshnessOptionsOpcionalAo 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/updateTimeItemMetadataRecomendadaPreencha durante a indexação de um item.
Campo ownersItemAcl()RecomendadaPreencha durante a indexação de um item.
Sinônimos personalizadosEsquema _dictionaryEntryRecomendadaDefina no nível da fonte de dados ou como uma fonte separada durante a indexação.
Campo qualitySearchQualityMetadataOpcionalDefina 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 iteminteractionOpcionalSe 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/enumOrderedRankingOpcionalQuando 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=falseScoringConfig ou usando a IU do administrador do Cloud SearchRecomendadaAo 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 SourceImportanceSourceCrowdingConfigOpcionalDefina este campo para influenciar os resultados de determinadas fontes de dados.
Campo numResultsSourceCrowdingConfigOpcionalDefina este campo para controlar a diversidade de resultados.

A seguir

Veja a seguir algumas das próximas etapas:

  1. Estrutura de um esquema para a interpretação ideal de consultas.

  2. Saiba como aproveitar o esquema _dictionaryEntry para definir sinônimos para termos comumente usados na empresa. Para usar o esquema _dictionaryEntry, consulte Definir sinônimos.