实现自动填充功能

当用户输入搜索查询时,Google Cloud Search 的自动填充功能会提供字词建议来帮助用户。例如,建议内容可能包括文档标题中的字词、搜索运算符或您 Google Workspace 组织中的名称。

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

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

示例场景

假设有一个包含电影数据的数据源:

  • 数据源包含两个文档。
  • 每个文档都有一个标题 (ItemMetadata.title) 以及 genrecharacters 两个属性。
  • 文档 1 标题:“Avengers Infinity War”;genre=science fictioncharacters=Iron Man, Hulk
  • 文档 2 标题:“Harry Potter”;genre=Adventure, Fantasycharacters=Hermione, Harry Potter

图 1 演示了自动补全功能如何提取建议。

两个文档和生成的 N 元语法
图 1. 用于自动填充的两个文档和生成的 N 元语法词组

从文档 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”。这是尾部建议。

Cloud Search 自动填充功能最多可从文档内容中返回 5 条建议,以及 2 条人工建议。

默认情况下,自动补全功能会显示文档标题中的短语。您必须明确将架构属性标记为 is_suggestable,这样 Suggest API 才能自动填充属性名称和属性值。

与 Suggest API 集成

如果您使用的是默认搜索应用或可嵌入的搜索微件,Cloud Search 会原生支持自动填充功能。请注意,如果您希望系统自动补全架构属性,请将这些属性标记为 is_suggestable

如要构建自定义搜索应用,可使用 /query/suggest API 端点来实现自动填充功能。

限制

自动补全功能具有以下限制:

  • 不支持使用 FilterOptions 限制自动补全短语,但内置过滤条件(例如 objecttypemimetype)除外。
  • 不支持基于用户查询历史记录的建议。
  • 您最多可以将 20 个属性标记为 is_suggestable。如需提高此限制,请与 Cloud Search 支持团队联系。
  • 具有 exact_match_with_operator 的属性不支持自动填充搜索运算符。
  • 自动补全功能最多可返回 5 条文档内容建议和 2 条人员建议。
  • 自动填充功能只会推荐用户有权访问的文档中所含的短语。