Docs 菜单

Docs 主页启动和管理 MongoDBMongoDB Atlas

如何为自动完成的字段创建索引

在此页面上

  • autocomplete 类型定义索引
  • 配置 autocomplete 字段属性
  • autocomplete 类型使用示例

您可以使用 Atlas Search autocomplete类型对字符串字段中的文本值进行索引以支持自动完成。您可以配置autocomplete类型以满足各种使用案例的要求。要详细了解autocomplete类型可用的配置选项,例如分词策略和变音符号折叠,请参阅配置autocomplete字段属性。您只能使用autocomplete操作符查询索引为autocomplete类型的字段。

您还可以使用 autocomplete 类型创建索引:

提示

如果要使用 autocomplete 操作符对大量文档和数据运行 Atlas Search 查询,构建该索引可能需要一些时间。或者,您可以创建仅包含 autocomplete 类型的单独索引,以减少构建索引时对其他索引和查询的影响。

要了解更多信息,请参阅 Atlas Search 索引性能注意事项

Atlas Search 不会动态地对 autocomplete 类型的字段进行索引。您必须 使用静态映射autocomplete 字段进行索引。您可以使用 Atlas 用户界面中的可视化编辑器JSON 编辑器autocomplete类型的字段进行索引。

要定义 autocomplete 类型的索引,请在 Atlas UI 中选择您的首选配置方法,然后选择数据库和集合。

Atlas Search autocomplete 类型采用以下参数:

选项
类型
必要性
说明
默认
type
字符串
必需
标识该字段类型的人类可读标签。值必须为字符串。
analyzer
字符串
可选

要用于该自动完成映射的分析器名称。除了 lucene.kuromoji 语言分析器和以下自定义分析器分词器和词元筛选器以外,您可以使用任何 Atlas Search 分析器:

lucene.standard
maxGrams
int
可选
每个索引序列的最大字符数。该值限制索引词元的字符长度。在搜索长度超过 maxGrams 值的词语时,Atlas Search 将词元截断为 maxGrams 长度。
15
minGrams
int
可选
每个索引序列的最小字符数。我们建议将 4 作为最小值。小于 4 的值可能会影响性能,因为索引可能会变得非常大。我们建议仅对 edgeGram 使用默认值 2
2
tokenization
Enum
可选

对字段进行索引以支持自动完成时使用的分词策略。值可以是以下值之一:

  • edgeGram — 通过从词语左侧开始的可变长度字符序列创建可索引词元(称为 grams),该序列的边界是由用于该自动完成映射的分析器定义的。

  • rightEdgeGram — 通过从词语右侧开始的可变长度字符序列创建可索引词元(称为 grams),该序列的边界是由用于该自动完成映射的分析器定义的。

  • nGram — 在词语上滑动可变长度字符窗口以创建可索引词元(称为 grams)。Atlas Search 为 nGram 创建的词元数超过 edgeGramrightEdgeGram。因此,nGram 需要更多的空间和时间对字段进行索引。nGram 更适合查询具有较长复合词或不使用空格的语言。

edgeGramrightEdgeGramnGram是在字母级别应用的。例如,请考虑以下句子:

The quick brown fox jumps over the lazy dog.

在使用 minGrams2maxGrams5 进行分词时,Atlas Search 根据您选择的 tokenization 值对以下字符序列进行索引:

注意

与对字符串字段进行索引相比,使用 edgeGramrightEdgeGramnGram 分词策略对字段进行索引以支持自动完成的计算成本更高。该索引占用的空间比具有常规字符串字段的索引多。

edgeGram
foldDiacritics
布尔
可选

该标记表示是在索引文本中包括还是删除变音符号。值可以是以下值之一:

  • true — 在索引和查询文本中忽略变音符号。返回包含和不包含变音符号的结果。例如,搜索 cafè 返回包含 cafècafe 字符的结果。

  • false — 在索引和查询文本中包含变音符号。仅返回与查询中包含或不包含变音符号的字符串匹配的结果。例如,搜索 cafè 仅返回包含 cafè 字符的结果。搜索 cafe 仅返回包含 cafe 字符的结果。

true

提示

另请参阅:其他索引定义示例

← 如何索引数组元素