如何为自动完成的字段创建索引
您可以使用 Atlas Search autocomplete
类型对字符串字段中的文本值进行索引以支持自动完成。您可以使用自动完成操作符查询作为 autocomplete
类型索引的字段。
您还可以使用 autocomplete
类型创建索引:
值为字符串数组的字段。要了解更多信息,请参阅如何对数组元素进行索引。
作为 embeddedDocuments 类型索引的文档数组中的字符串字段。
提示
如果要使用 autocomplete 操作符对大量文档和数据运行 Atlas Search 查询,构建该索引可能需要一些时间。或者,您可以创建仅包含 autocomplete
类型的单独索引,以减少构建索引时对其他索引和查询的影响。
要了解更多信息,请参阅 Atlas Search 索引性能注意事项。
Atlas Search 不会动态地对 autocomplete
类型的字段进行索引。您必须 使用静态映射对 autocomplete
字段进行索引。您可以使用 Atlas 用户界面中的可视化编辑器或 JSON 编辑器对 autocomplete
类型的字段进行索引。
为 autocomplete
类型定义索引
要定义 autocomplete
类型的索引,请在 Atlas UI 中选择您的首选配置方法,然后选择数据库和集合。
单击 Refine Your Index 配置索引。
在 Field Mappings 部分中,单击 Add Field 打开 Add Field Mapping 窗口。
单击 Customized Configuration(连接)。
从 Field Name 下拉菜单中选择要索引的字段。
注意
您无法对字段名称开头包含美元 (
$
) 符号的字段创建索引。对于包含术语
email
或url
的字段名称,Atlas Search Visual Editor 建议使用带有uaxUrlEmail分词器的自定义分析器来索引电子邮件地址或 URL 值。单击 Create urlEmailAnalyzer,创建自定义分析器并将其应用到字段的 Autocomplete Properties 中。单击 Data Type(添加数据)下拉列表并选择 Autocomplete(插入文档)。
(可选)展开并配置该字段的 Token Properties。要了解更多信息,请参阅配置
token
字段属性。单击 Add(连接)。
以下是 autocomplete
类型的 JSON 语法。将默认索引定义替换为以下内容。要了解有关字段的更多信息,请参阅字段属性。
1 { 2 "mappings": { 3 "dynamic": true|false, 4 "fields": { 5 "<field-name>": { 6 "type": "autocomplete", 7 "analyzer": "<lucene-analyzer>", 8 "tokenization": "edgeGram|rightEdgeGram|nGram", 9 "minGrams": <2>, 10 "maxGrams": <15>, 11 "foldDiacritics": true|false 12 } 13 } 14 } 15 }
配置 autocomplete
字段属性
Atlas Search autocomplete
类型采用以下参数:
选项 | 类型 | 必要性 | 说明 | 默认 | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字符串 | 必需 | 标识该字段类型的人类可读标签。值必须为字符串。 | |||||||||||||||||||||||||||||||||||||||||||||||||
| 字符串 | 可选 |
| |||||||||||||||||||||||||||||||||||||||||||||||||
| int | 可选 | 每个索引序列的最大字符数。该值限制索引词元的字符长度。在搜索长度超过 |
| ||||||||||||||||||||||||||||||||||||||||||||||||
| int | 可选 | 每个索引序列的最小字符数。我们建议将 |
| ||||||||||||||||||||||||||||||||||||||||||||||||
| 枚举 | 可选 | 对字段进行索引以支持自动完成时使用的分词策略。值可以是以下值之一:
在使用
与对字符串字段进行索引相比,使用 对于指定的分词策略,Atlas Search 在发出顺序词元之前应用以下过程来连接它们。 此过程有时称为“叠瓦”。 Atlas Search 发出长度在
|
| ||||||||||||||||||||||||||||||||||||||||||||||||
| 布尔 | 可选 | 指示是否执行规范化 的标记,例如包含或删除索引文本中的变音符号。值可以是以下值之一:
|
|
尝试 autocomplete
类型的示例
以下索引定义示例使用 sample_mflix.movies 集合。如果您的集群上已加载示例数据,则可以使用 Atlas 用户界面中的可视化编辑器或 JSON 编辑器来配置索引。选择首选配置方法后,选择数据库和集合并优化索引以添加字段映射。
以下索引定义示例仅将 title
字段索引为 autocomplete
类型,以支持使用 autocomplete 操作符对该字段进行 search-as-you-type 查询。该索引定义还指定以下内容:
使用标准分析器根据单词边界将文本值划分为术语。
使用
edgeGram
分词策略从单词左侧开始对字符进行索引。每个索引序列至少索引
3
个字符。每个索引序列最多索引
5
个字符。在索引和查询文本中包含变音符号。
在 Add Field Mapping 窗口中,从 Field Name 下拉列表中选择 title。
单击 Data Type(添加数据)下拉列表并选择 Autocomplete(插入文档)。
对 Autocomplete Properties 进行以下更改:
最大词语数
将值设置为
5
。最小词语数
将值设置为
3
。分词器
从下拉列表中选择
edgeGram
。折叠变音符号
从下拉列表中选择
false
。单击 Add(连接)。
将默认索引定义替换为以下索引定义。
1 { 2 "mappings": { 3 "dynamic": false, 4 "fields": { 5 "title": { 6 "type": "autocomplete", 7 "analyzer": "lucene.standard", 8 "tokenization": "edgeGram", 9 "minGrams": 3, 10 "maxGrams": 5, 11 "foldDiacritics": false 12 } 13 } 14 } 15 }
以下索引定义示例使用 sample_mflix.movies 集合。如果您的集群上已加载示例数据,则可以使用 Atlas 用户界面中的可视化编辑器或 JSON 编辑器来配置索引。选择首选配置方法后,选择数据库和集合并优化索引以添加字段映射。
您也可以通过在数组中指定其他类型来将字段索引为其他类型。例如,以下索引定义将 title
字段索引为以下类型:
autocomplete
类型,支持使用 autocomplete 操作符自动完成查询。
在 Add Field Mapping 窗口中,从 Field Name 下拉列表中选择 title。
单击 Data Type(添加数据)下拉列表并选择 Autocomplete(插入文档)。
对 Autocomplete Properties 进行以下更改:
最大词语数
将值设置为
15
。最小词语数
将值设置为
2
。分词器
从下拉列表中选择
edgeGram
。折叠变音符号
从下拉列表中选择
false
。单击 Add(连接)。
重复步骤 b 到 d。
单击 Data Type(添加数据)下拉列表并选择 String(插入文档)。
接受默认的 String Properties 设置,然后单击 Add。
将默认索引定义替换为以下索引定义。
1 { 2 "mappings": { 3 "dynamic": true|false, 4 "fields": { 5 "title": [ 6 { 7 "type": "autocomplete", 8 "analyzer": "lucene.standard", 9 "tokenization": "edgeGram", 10 "minGrams": 2, 11 "maxGrams": 15, 12 "foldDiacritics": false 13 }, 14 { 15 "type": "string" 16 } 17 ] 18 } 19 } 20 }
以下索引定义示例使用 sample_mflix.users 集合。如果已在集群上加载样本数据,则可使用 Atlas 用户界面中的可视化编辑器或 JSON 编辑器来配置索引。选择首选的配置方法后,选择数据库和集合,并优化索引以添加字段映射。
以下索引定义示例仅将 email
字段索引为 autocomplete
类型,以支持使用 autocomplete 操作符对该字段进行 search-as-you-type 查询。该索引定义指定以下内容:
使用关键字分析器接受字符串或字符串数组以作为参数,并将它们作为单个词语(词元)进行索引。
使用 nGram 分词器器将文本分词为给定大小的数据块或“n-gram”。
每个索引序列至少索引
3
个字符。每个索引序列最多索引
15
个字符。在索引和查询文本中包含变音符号。
您还可以使用 uaxUrlEmail
分词器对 URL 和电子邮件地址进行分词。要了解更多信息,请参阅uaxUrlEmail。
在 Add Field Mapping 窗口中,从 Field Name 下拉列表中选择 email。
单击 Data Type(添加数据)下拉列表并选择 Autocomplete(插入文档)。
对 Autocomplete Properties 进行以下更改:
分析器
从下拉列表中选择 lucene.keyword。
最大词语数
将值设置为
15
。最小词语数
将值设置为
3
。分词器
从下拉列表中选择 nGram。
折叠变音符号
从下拉列表中选择
false
。单击 Add(连接)。
将默认索引定义替换为以下索引定义。
1 { 2 "mappings": { 3 "dynamic": true, 4 "fields": { 5 "email": { 6 "type": "autocomplete", 7 "analyzer": "lucene.keyword", 8 "tokenization": "nGram", 9 "minGrams": 3, 10 "maxGrams": 15, 11 "foldDiacritics": false 12 } 13 } 14 } 15 }
另请参阅:其他索引定义示例