提高搜索质量

“搜索质量”是指执行搜索查询的用户对于搜索结果的排名和召回率等质量体验。

“排名”是指项的排序,而“召回率”是指检索到的相关项的数量。内容(也称为文档)是指任何 以供 Google Cloud Search 编入索引。项的类型包括 Microsoft Office 文档、PDF 文件、数据库中的行、唯一网址等。项包含以下内容:

  • 结构化元数据
  • 可编入索引的内容
  • ACL

Cloud Search 使用多种信号来检索搜索查询结果,并对其进行排名;项由搜索查询所生成。您可以通过架构中的设置、项的内容和元数据(编制索引期间)和搜索应用来影响 Cloud Search 的信号。本文档旨在帮助您通过修改这些信号影响因素来提高搜索质量。

如需查看推荐和可选设置的摘要,请参阅推荐和可选搜索质量设置摘要

影响话题性分数

“话题性”是指搜索结果与原始查询字词的相关性。项的话题性根据以下标准而计算得出:

  • 每个查询字词的重要性。
  • 命中数(查询字词在项的内容或元数据中出现的次数)。
  • 查询字词及其变体与在 Cloud Search 中编入索引的项的匹配类型。

若要影响文本属性的话题性分数, 定义 RetrievalImportance 对架构中的 text 属性进行设置。与价格较高的房源匹配 与以下类别的匹配相比,“RetrievalImportance”的得分较高 属性。RetrievalImportance

例如,假设您的一个数据源具有以下特征:

  • 数据源用于存储软件错误的历史记录。
  • 每个 Bug 都具有名称、描述和优先级。

大多数用户会使用 bug 名称来查询此数据源,因此您需要 在架构中将名称的 RetrievalImportance 设置为 HIGHEST

反之,大多数用户可能不会使用 因此,请将说明中的 RetrievalImportance 设置为 DEFAULT。 以下是包含 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": {
          }
        },
        ...
      ]
    }
  ]
}

如果是 HTML 文档,则应该添加 <title><h1> 等标记,以及 字体大小和粗体等格式设置用于确定 重要性。如果 ContentFormatTEXTItemContent 具有 DEFAULT 检索重要性,如果格式为 HTML,则其检索重要性 根据 HTML 属性确定。

影响新鲜度

新鲜度衡量的是项目最近一次修改和确定的时间 createTimeupdateTime 属性 ItemMetadata。 时间较早的内容会在搜索结果中降位。

通过调整 freshnessPropertyfreshnessDuration FreshnessOptions 架构中。

借助 freshnessProperty,您可以使用日期或时间戳属性 计算新鲜度,而不是默认的 updateTime

在之前的软件错误跟踪系统示例中,截止日期可以是 用作 freshnessProperty,以便项的截止日期最接近 都会被视为“更新鲜”,并且排名会提升。已关注 包含 freshnessProperty 设置的架构示例:

{
  "objectDefinitions": [
    {
      "name": "issues",
      "options": {
        "freshnessOptions": {
          "freshnessProperty": "duedate"
        }
      },
      "propertyDefinitions": [
        {
          "name": "summary",
          "textPropertyOptions": {
            "retrievalImportance": {
              "importance": HIGHEST
            }
          }
        },
        {
          "name": "duedate",
          "datePropertyOptions": {
          }
        },
        ...
      ]
    }
  ]
}

使用 freshnessDuration 可以确定内容何时被视为过期。 例如,您的数据源可能不会被定期编入索引, 而您不希望新鲜度影响排名。您可以实现这一目标, 为 freshnessDuration 指定一个较高的值。

假设您有一个包含员工个人资料信息的数据源。在本课中, 那么当对员工进行更改时,您可能需要提高 freshnessDuration 信息通常与员工的排名无关。已关注 包含 freshnessDuration 设置的架构示例:

{
  "objectDefinitions": [
    {
      "name": "people",
      "options": {
        "freshnessOptions": {
          "freshnessDuration": "315360000s", # 100 years
        }
      },
    }
  ]
}

对于数据源,您还可以将 freshnessDuration 设置为非常小的值 内容会快速变化的过滤器,例如包含新闻报道的数据源。 在这种情况下,最近创建或修改的文档将具有最高的相关性。 以下是包含数据的 freshnessDuration 设置的架构示例 包含快速变化内容的来源:

{
  "objectDefinitions": [
    {
      "name": "news",
      "options": {
        "freshnessOptions": {
          "freshnessDuration": "259200s", # 3 days
        }
      },
    }
  ]
}

影响质量

“质量”可衡量项的准确性和实用性。一个数据源可以包含多个语义相似的文档,且每个文档都具有不同的质量等级。您可以指定介于 0 到 0 之间的质量值 1 使用 SearchQualityMetadata。 相较于值越小的项,值越大,其排名就会提升 值。只有当您需要影响或提高向 Cloud Search 所提供信息之外的项的质量时,才应使用此设置。

例如,假设您有一个包含员工福利文档的数据源。您可以使用 SearchQualityMetadata 来提升 人力资源员工撰写的文档以及由他人撰写的文档 员工。

以下是包含 SearchQualityMetadata 设置的示例架构 bug 跟踪系统中存在的问题:

{
  "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
    }
  },
  ...
}

在此架构中,当用户使用搜索字词“issue”进行搜索时,架构中的 Issue 3(质量值为 1)的排名将高于 Issue 2(质量值为 0.5)和 Issue 1(如果未指定,则默认质量值为 0)。

使用字段类型影响排名

借助 Cloud Search,您可根据枚举或整数属性的值来影响排名。对于每个整数或枚举属性, OrderedRanking 。此设置具有以下值:

  • NO_ORDER(默认值):该属性不影响排名。
  • ASCENDING:与具有较小值的项相比,此整数或枚举属性值较大的项会获得更高的排名。
  • DESCENDING:与具有较大值的项相比,整数或枚举属性值较小的项会获得更高的排名。

例如,假设错误跟踪系统中的每个错误都具有一个枚举属性,用于将错误的优先级存储为 HIGH (1)、MEDIUM (2) 或 LOW (3)。在这种情况下,将 OrderedRanking 设置为 DESCENDING 可提供 与优先级为 LOW 的 bug 相比,优先级提升为 HIGH 个 bug。 以下架构示例包含OrderedRanking bug 跟踪系统:

{
  "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,
          }
        },

        ...
      ]
    }
  ]
}

bug 跟踪系统还可以有一个称为 votes 的整数属性,用于 收集用户对错误的相对重要性的反馈。您可以使用 votes 属性,通过为 得票最多的几个错误。在这种情况下,您可以指定 OrderedRankingvotes 属性ASCENDING,以确保得票数最多的问题 获得更高的排名。以下是包含 OrderedRanking 的架构示例 错误跟踪系统中的问题设置:

{
  "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,
          }
        },

        ...
      ]
    }
  ]
}

通过查询扩展影响排名

“查询扩展”是指使用同义词和拼写来扩展查询中的字词,以检索更好的结果。

使用同义词影响搜索结果

Cloud Search 利用根据公共网络内容推断出的同义词来扩展查询字词。您还可以定义自定义同义词,用以捕获组织专用术语,例如组织内使用的常见首字母缩写词和或行业专用术语。

自定义同义词可以在数据源中定义,也可以作为单独的数据源定义。默认情况下,同义词会应用于所有搜索中的所有数据源 应用。不过,您可以按数据源对同义词进行分组, 搜索应用。如需了解如何定义自定义同义词,包括 如何按搜索应用分组,请参阅 定义同义词

使用拼写影响搜索结果

Cloud Search 根据使用 Google 搜索公开数据所构建的模型提供拼写建议。如果 Cloud Search 在上下文中检测到拼写错误 都会以 SpellResult。 建议的拼写可以作为建议内容向用户显示。例如,用户可能会使用拼写错误的查询字词“employe”,而系统可能会提供如下建议:“您是不是要找:employee”。

Cloud Search 还使用更正的拼写作为同义词,帮助检索由于拼写错误而可能被遗漏的文档。

通过搜索应用设置影响排名

Google Cloud Search 简介中所述,搜索应用是一组设置,当与搜索界面关联时,这些设置会提供有关搜索的上下文信息。借助以下配置,您可以通过搜索应用来影响排名:

  • 评分配置
  • 源配置

以下两节介绍这些配置如何有助于影响排名。

调整评分配置

对于每个搜索应用,您可以指定一个 ScoringConfig,用于在排名时控制某些信号的应用。目前, 您可以停用新鲜度个性化

如果停用新鲜度,则搜索应用中所列全部数据源的新鲜度都将被停用,而无论数据源架构中指定的新鲜度选项如何。同样,如果个性化功能已停用,owner 提升和互动度提升不会影响排名。

有关配置此设置的分步说明,请参阅 自定义 Cloud Search 中的搜索体验

调整源配置

源配置可用于指定搜索应用中的数据源级别设置。支持以下设置:

  • 源重要性
  • 数量上限

设置源重要性

“源重要性”是指搜索应用中数据源的相对重要性。可在“SourceImportance”字段中指定此设置 内部 SourceScoringConfig。 来源重要性为 HIGH 的数据源中的项将获得更高的排名 与来自数据源为 DEFAULTLOW 的项相比 重要性如果您认为用户更偏好来自某些数据源的结果,请使用此设置来影响排名。

例如,假设您有一个包含外部和内部问题排查数据的产品支持门户。在这种情况下,您可能希望配置搜索应用,以对来自内部数据源的结果划分优先级。

有关配置此设置的分步说明,请参阅 自定义 Cloud Search 中的搜索体验

设置数量上限

“数量上限”是指在搜索应用中可以从一个数据源返回的最大结果数。此值 可使用 numResults 字段进行控制, SourceCrowdingConfig。 此值默认为 3,这意味着如果显示了 3 条数据结果, 来源 Cloud Search 会开始显示来自其他数据源的结果。仅当所有数据源都达到数量上限或其他数据源不再提供更多结果时,系统才会重新考虑第一个数据源中的项。

此设置有助于确保搜索结果的多样性,并防止同一个数据源占据搜索结果页面。

有关配置此设置的分步说明,请参阅 自定义 Cloud Search 中的搜索体验

通过个性化影响排名

“个性化”是指基于访问结果的个人用户呈现个性化的搜索结果。您可以根据以下条件,通过划分项的优先级来影响排名:

  • 项所有权
  • 项交互情况
  • 用户点击
  • 项语言

以下三节介绍如何基于这些条件来影响搜索质量。

基于项所有权影响排名

“项所有权”是指向执行搜索查询的用户所拥有的项提供更高的排名。每一项都有 ItemAcl 并包含 owners 字段。如果执行查询的用户是项的所有者,则在默认情况下,该项会获得更高的排名。您可以在搜索应用中关闭个性化功能。

基于项的交互情况提升排名

“项的交互情况”是指向搜索查询用户进行过交互(查看、评论、编辑等)的项提供更高的排名。

系统会自动为 Google Workspace 获取项目互动信号 例如云端硬盘和 Gmail 等产品。对于其他产品,您可以提供项级别的交互数据,包括交互类型(查看和编辑)、交互的时间戳和主体(与项进行交互的用户)。请注意,近期进行过交互的项的排名会更靠前。

根据用户点击次数提高排名

Cloud Search 会收集当前搜索结果获得的点击次数,并将其用于 通过提升网站浏览者之前点击过的商品, 同一用户。

通过查询解释影响排名

Cloud Search 的“查询解释”功能可自动解释用户查询中的运算符和过滤条件,并将这些元素转换为基于运算符的结构化查询。“查询解释”使用架构中定义的运算符并结合已编入索引的文档推断出用户查询的含义。此功能可让用户使用最少的关键字进行搜索,但仍然能够获得精确的结果。如需了解详情,请参阅 构建架构以获得最佳查询解释

基于项语言提升排名

“语言”是指将语言与查询语言不匹配的项的排名降位。以下因素会影响 基于语言的项目:

  • 查询语言。自动检测到的搜索查询语言,或 languageCode(在 RequestOptions

    如果您要构建自定义搜索界面,则应将 languageCode 设置为 用户的界面语言或语言使用偏好(例如 网络浏览器或搜索界面页)。自动检测到的查询 语言优先于 languageCode,因此搜索质量不会 用户使用的语言不同于自己输入的语言 界面。

  • 商品语言。索引时在 ItemMetadata 中设置的 contentLanguage, 或 Cloud Search 自动检测的内容语言。

    如果文档的 contentLanguage 在索引时留空,并且 ItemContent 已填充,Cloud Search 会尝试检测语言 在 ItemContent 中使用,并将其存储在内部。自动检测到的 语言未添加到 contentLanguage 字段中。

如果查询的语言与项的语言匹配,则不会应用语言降位。如果 这些设置不匹配,那么该项目将被降位。不允许语言降位 应用于 contentLanguage 为空且 Cloud Search 无法搜索的文档 自动检测语言因此,文档的排名 如果 Cloud Search 无法检测到其语言,则会受到影响。

根据内容上下文提升排名

您可以提高与情境相关性更高的项目的排名 。背景信息 (contextAttributes) 是一组命名属性,您可以在编制索引期间指定该属性,也可在 搜索请求,从而为特定搜索查询提供上下文。

例如,假设某件商品(如员工福利单据) 与 LocationDepartment 上下文相关,例如城市 (San Francisco)、州(California)、国家/地区 (USA) 和DepartmentEngineering)。在这种情况下,您可以将以下内容编入索引: 命名的属性:

{
  ...
  "metadata": {
    "contextAttributes": [
      {
        name: "Location"
        values: [
          "San Francisco",
          "California",
          "USA"
        ],
      },
      {
        name: "Department"
        values: [
          "Engineering"
        ],
      }
    ],
  },
  ...
}

当用户搜索查询“福利”时进入搜索界面后 可能会在搜索结果中包含用户的位置信息和部门 请求。例如,以下是包含位置和部门的搜索请求 芝加哥工程师的资料:

{
  ...
  "contextAttributes": [
    {
      name: "Location"
      values: [
        "Chicago",
        "Illinois",
        "USA"
      ],
    },
    {
      name: "Department"
      values: [
        "Engineering"
      ],
    }
  ],
  ...
}

因为已编入索引的项和搜索请求都包含 “部门=工程”“Location=USA”索引项(员工 福利文档)在搜索结果中的排名更靠前。

现在,假设另一位用户(印度的工程师)输入了搜索查询: "福利"进入搜索界面下面是一个搜索请求,其中包含 位置和部门信息:

{
  ...
  "contextAttributes": [
    {
      name: "Location"
      values: [
        "Bengaluru",
        "Karnataka",
        "India"
      ],
    },
    {
      name: "Department"
      values: [
        "Engineering"
      ],
    }
  ],
  ...
}

因为已编入索引的项和搜索请求都仅包含 属性,即“Department=Engineering”编入索引的项只是稍微 在搜索结果中的排名较高(与 "福利")。

以下是一些您可能希望用来提高排名的示例上下文:

  • 位置:显示的内容可能与特定位置(例如建筑物、城市、国家/地区或区域)的用户更相关。
  • 职位:职位可能与特定职位角色(例如技术文档工程师或工程师)的用户更相关。
  • 部门:内容可能与特定部门(例如销售部门或市场营销部门)更相关。
  • 职位级别:内容可能与特定职位级别(如总监或首席执行官)更相关。
  • 员工类型:项目可能与特定类型的员工(如兼职员工和全职员工)更相关。
  • 任职期:内容可能与员工的任职期更相关,例如新员工。

通过商品热门程度影响排名

Cloud Search 提升了热门商品的排名;也就是说,它会提升在近期搜索查询中获得了点击的商品。

通过点击提升影响排名

Cloud Search 会收集当前搜索结果获得的点击次数,并利用这些数据提升特定搜索查询的热门项的排名,从而提高日后搜索的排名。

推荐和可选搜索质量设置摘要

下表列出了所有推荐和可选的搜索质量 设置。这些建议应该可以帮助您充分利用 Cloud Search 的排名模型。

设置位置推荐/可选详情
架构设置
ItemContent 字段ItemContent推荐创建或更新架构时,填充项的非结构化内容。此字段用于生成摘要。
RetrievalImportance 字段RetrievalImportance推荐创建或更新架构时,为重要性和话题性明显很高的文本属性设置此字段。
FreshnessOptionsFreshnessOptions可选创建或更新架构时,设置此字段可确保项不会因为数据不正确或发生数据丢失的情况而被降位。
索引设置
createTime/updateTimeItemMetadata推荐将项编入索引时填充。
contentLanguageItemMetadata推荐在为项编制索引期间填充内容。如果不包含,Cloud Search 会尝试检测 ItemContent 中使用的语言。
owners 字段ItemAcl()推荐将项编入索引时填充。
自定义同义词_dictionaryEntry 架构推荐编入索引时在数据源级别定义,或作为单独的数据源定义。
quality 字段SearchQualityMetadata可选要提升基本质量(与其他语义相似的项相比),请在编入索引时设置质量。为数据源中的所有项设置此字段会使其效果失效。
项级别的交互数据interaction可选如果数据源记录并提供对用户交互情况的访问权限,则在编入索引时填充每一项的交互情况。
整数/枚举属性OrderedRanking可选如果项的顺序具有相关性,则在编入索引时指定整数和枚举属性的有序排名。
搜索应用设置
Personalization=falseScoringConfig 或使用 Cloud Search 管理界面推荐创建或更新搜索应用时。确保您提供了正确的所有者信息,如“通过个性化影响排名”中所述
SourceImportance 字段SourceCrowdingConfig可选如果偏好来自某些数据源的结果,则设置此字段。
numResults 字段SourceCrowdingConfig可选若要控制结果的多样性,请设置此字段。

后续步骤

您可以执行以下几个后续步骤:

  1. 构建架构以获得最佳查询解释

  2. 了解如何利用 需要定义的 _dictionaryEntry 架构 公司常用术语的同义词。要使用 _dictionaryEntry 请参阅 定义同义词