实现自动填充功能

当用户输入搜索查询时,Cloud Search 的自动填充功能会提供字词建议来帮助用户。这些建议可能是文档标题中包含的字词、搜索运算符、搜索运算符值、G Suite 网域中的名称和电子邮件等等。

自动填充功能会从已编入索引的文档的标题中提取词组,并使用 N 元语法模型确定要使用 Suggest API 提供的建议。例如,假设我们有以下数据源,其中包含有关电影的数据:

  • 该数据源包含 2 个文档。
  • 每个文档都有一个标题 (ItemMetadata.title) 以及 genrecharacters 两个属性。
  • 第一个文档的标题为“Avengers Infinity War”,且上述两个属性分别为 genre=science fictioncharacters=Iron Man, Hulk
  • 第二个文档的标题为“Harry Potter”,且上述两个属性分别为 genre=Adventure, Fantasy and 和 characters=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

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

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

与 Autocomplete API 集成

如果您使用的是默认搜索应用或可嵌入的搜索微件,则 Cloud Search 的自动填充功能具备原生支持,您无需进行其他任何操作。请记住,默认情况下,文档标题中所含的短语会以自动填充方式显示。架构属性必须明确标记为 is_suggestable,这样 Suggest API 才能自动填充相应的属性名称和属性值。

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

限制

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

  • 不支持使用架构中定义的 FilterOptions 限制 Cloud Search 的自动填充短语,但以下内置过滤器除外:objectypemimetype 和 type 过滤器。

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

  • 最多可以将 20 个属性标记为 is_suggestable。如需增加此限制,您可以联系 Cloud Search 支持部门。

  • 具有 exact_match_with_operator 的属性不支持自动填充搜索运算符。