实现自动填充功能

当用户输入搜索查询时,Cloud Search 的自动补全功能会提供字词建议,从而为用户提供帮助。例如,建议可能是文档标题中的字词、搜索运算符、搜索运算符值,或来自 Google Workspace 组织的名称和电子邮件地址。

自动补全功能会从已编入索引的文档标题中提取短语,并使用 N 元语法模型确定要使用 Suggest API 提供的建议。默认情况下,文档标题中的短语显示在自动补全中。您还可以将文本和枚举架构属性标记为 is_suggestable,以自动填充相应的属性名称和值。

Suggest API 会检查搜索查询以获取有关查询语言(例如英语或西班牙语)的提示,并相应地确定结果的优先级。请求的 languageCode 字段还可用于改进特定语言的建议。

示例场景

例如,假设您有以下数据源,其中包含有关电影的数据:

  • 该数据源包含 2 个文档。
  • 每个文档都有一个标题 (ItemMetadata.title) 和两个属性:genrecharacters
  • 第一个文档的标题为“Avengers Infinity War”,包含 genre=science fictioncharacters=Iron Man, Hulk
  • 第二个文档的标题为“Harry Potter”,且包含 genre=Adventure, Fantasy andcharacters=Hermione, Harry Potter`

图 1 说明了如何从文档标题、属性和属性值中提取自动补全建议。

两个文档和生成的 N 元语法词组
图 1. 用于自动补全功能的两个文档和生成的 N 元语法

从文档 1 中,我们从文档 1 中提取 n 元语法(最多为三元语法),即“复仇者”“无限”“战争”“《复仇者:无限战争》《无限战争》,《复仇者无限战争》,同样地从文档 2 中提取“哈利”“哈利”“哈利”“哈利”

在查询此数据源时,我们假设用户首先输入“h”。系统会向用户显示以下建议:

  • Harry
  • Hermione
  • Hulk
  • Harry Potter

假设用户选择了自动补全建议“Hermione”,下一次按键是字符“a”。向用户显示的自动补全建议将如下所示:

  • Hermione Adventure
  • Hermione Action
  • Hermione Avengers

自动补全功能会尝试填充输入的最后一个字词(或 N 元语法词组)。在前面的示例中,它只是将“a”扩展为“adventure”、“action”和“avengers”,因为没有以“hermione a”开头的文本。此建议称为尾部建议;仅自动填充输入的最后一个字词/N 元语法。

Cloud Search 的自动补全功能会根据文档内容最多返回 5 条建议,以及最多 2 条人员建议。

默认情况下,文档标题中所含的短语会以自动填充方式显示。架构属性必须明确标记为 is_suggestable,这样 Suggest API 才能自动填充相应的属性名称和属性值。

与 Autocomplete API 集成

如果您使用的是默认搜索应用或嵌入式搜索 widget,则 Cloud Search 的自动补全功能是原生支持的,您无需执行任何额外的操作。请注意,默认情况下,文档标题中的短语显示在自动补全中。架构属性必须明确标记为 is_suggestable,这样 Suggest API 才能自动填充相应的属性名称和属性值。

如果您是在构建自定义搜索应用,可以通过查询 /query/suggest API 端点来实现自动补全。

限制

自动填充功能具有以下限制:

  • 不支持使用架构中定义的 FilterOptions 限制 Cloud Search 的自动补全词组,但以下内置过滤条件除外:objectypemimetype 和类型过滤条件。

  • 不支持基于查询历史记录的建议(用户以前在搜索应用中执行的搜索)

  • 最多可以将 20 个属性标记为 is_suggestable。如需提高此限额,请与 Cloud Search 支持团队联系。

  • 搜索运算符自动补全不适用于具有 exact_match_with_operator 的属性。

  • Cloud Search 的自动补全功能会根据文档内容最多返回 5 条建议,以及最多 2 条人员建议。

  • Cloud Search 的自动补全功能只会提供用户有权访问的文档中给出的词组建议。