实现自动填充功能

Cloud Search 的自动补全功能可为用户提供建议字词 当用户输入搜索查询时触发。例如,建议的字词可能是 从文档标题、搜索运算符、搜索运算符值或名称 电子邮件地址。

自动补全功能会从已编入索引的文档标题中提取词组,并使用 n-gram 模型, 确定要使用 Suggestion API 提供的建议。默认情况下,词组来自 文档标题会显示在自动补全功能中。您还可以标记文本和枚举 架构属性为 is_suggestable,以自动补全相应属性 名称和值。

建议 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 中提取“Avengers”、“Infinity”、“War”和 《复仇者联盟:无限战争》《无限战争》《复仇者联盟:无限战争》。 同样,从文档 2 中,我们生成“Harry”“Potter”“Harry Potter”。

在查询此数据源时,假设用户首先输入“h”。通过 显示如下建议:

  • Harry
  • Hermione
  • Hulk
  • Harry Potter

假设用户选择了自动填充建议“Hermione”,然后 字符“a”。显示的自动补全建议 会是:

  • Hermione Adventure
  • Hermione Action
  • Hermione Avengers

自动补全功能会尝试补全输入的最后一个字词(或 N 元语法词组)。 在前面的示例中,该宏只是扩展了“a”“冒险”“动作”和 “复仇者联盟”因为没有以“hermione a”开头的文本。这个 该建议称为尾部建议仅自动填充最后一个字词/N 元语法 。

Cloud Search 的自动补全功能最多会返回 5 条建议 来自文档内容和 2 人建议。

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

与 Autocomplete API 集成

如果您使用的是默认搜索应用或嵌入式搜索 微件,则系统原生支持 Cloud Search 的自动补全功能 而无需您执行任何其他操作默认情况下,请记住 商品名称在自动补全功能中显示。架构属性必须明确标记为 is_suggestable,用于建议 API 自动补全相应属性 名称和值。

如果你要构建自定义搜索应用 可通过查询 /query/suggest API 端点获得。

限制

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

  • 使用 FilterOptions 不支持,除非以下内置 过滤条件:objectypemimetype 和类型过滤条件。

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

  • 最多可将 20 个属性标记为 is_suggestable。此限制 。

  • 以下属性不支持自动补全搜索运算符: exact_match_with_operator

  • Cloud Search 的自动补全功能最多会返回 5 条建议 来自文档内容和 2 人建议。

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