当用户输入搜索查询时,Cloud Search 的自动补全功能会提供字词建议来帮助用户。例如,这些建议可能是文档标题中包含的字词、搜索运算符、搜索运算符值,或 Google Workspace 组织中的名称和电子邮件地址。
自动补全功能会从已编入索引的文档的标题中提取词组,并使用 N 元语法模型确定要使用 Suggest API 提供的建议。默认情况下,文档标题中所含的短语会以自动填充方式显示。您还可以将文本和枚举架构属性标记为 is_suggestable
,以自动填充相应的属性名称和值。
Suggest API 会检查搜索查询,以获取有关查询语言(例如英语或西班牙语)的提示,并据此确定结果的优先级。请求的 languageCode
字段还用于改进特定于语言的建议。
示例场景
例如,假设您有以下包含电影相关数据的数据源:
- 该数据源包含 2 个文档。
- 每个文档都有一个标题 (
ItemMetadata.title
) 以及genre
和characters
两个属性。 - 第一个文档的标题为“Avengers Infinity War”,且
genre=science fiction
和characters=Iron Man, Hulk
- 第二个文档的标题为“Harry Potter”,且
genre=Adventure, Fantasy and
characters=Hermione, Harry Potter`
图 1 演示了如何从文档标题、属性和属性值中提取自动填充建议。
从文档 1 中,我们提取以下 N 元语法(最多为 3 元)词组:“Avengers”“Infinity”“War”“Avengers Infinity”“Infinity War”“Avengers Infinity War”。同理,从文档 2 中,我们提取“Harry”“Potter”“Harry Potter”词组。
当查询此数据源时,假设用户首先输入字符“h”。向用户显示的建议将如下所示:
- Harry
- Hermione
- Hulk
- Harry Potter
假设用户选择了自动填充建议“Hermione”,然后输入下一个字符“a”。系统会向用户显示如下自动补全建议:
- Hermione Adventure
- Hermione Action
- Hermione Avengers
自动补全功能会尝试填充输入的最后一个字词(或 N 元语法词组)。 在前面的示例中,由于没有以“hermione a”开头的文本,因此自动填充功能只将“a”扩展为“adventure”“action”和“avengers”。这项建议被称为后尾 (tail) 建议,即仅自动填充输入的最后一个字词/N 元语法词组。
Cloud Search 的自动补全功能最多可从文档内容中返回 5 条建议,以及 2 条人员建议。
默认情况下,文档标题中所含的短语会以自动填充方式显示。架构属性必须明确标记为 is_suggestable
,这样 Suggest API 才能自动填充相应的属性名称和属性值。
与 Autocomplete API 集成
如果您使用的是默认搜索应用或可嵌入的搜索微件,则 Cloud Search 的自动补全功能具备原生支持,您无需进行其他任何操作。请注意,默认情况下,文档标题中所含的短语会以自动填充方式显示。架构属性必须明确标记为 is_suggestable
,这样 Suggest API 才能自动填充相应的属性名称和属性值。
如果您要构建自定义搜索应用,可通过查询 /query/suggest
API 端点来实现自动补全功能。
限制
自动填充功能具有以下限制:
不支持使用架构中定义的
FilterOptions
限制 Cloud Search 的自动补全字词,但以下内置过滤条件除外:objectype
、mimetype
和类型过滤条件。不支持基于查询历史记录的建议(即用户以前在搜索应用中执行的搜索)
最多可以将 20 个媒体资源标记为
is_suggestable
。如需增加此限制,您可以联系 Cloud Search 支持团队。具有
exact_match_with_operator
的媒体资源不支持自动补全搜索运算符。Cloud Search 的自动补全功能最多可从文档内容中返回 5 条建议,以及 2 条人员建议。
Cloud Search 的自动补全功能只会推荐用户有权访问的那些文档中所含的短语。