如何对字符串字段进行索引以实现高效筛选和排序
您可以使用 Atlas Search token
类型来索引 string 字段,对 Atlas 搜索结果进行排序。然后,您可以在查询中使用 $search
sort
选项按索引字段对结果进行排序。要了解详情,请参阅对 Atlas Search 结果进行排序 。您还可以使用 Atlas Search token
类型来索引 string 字段,以预筛选 $vectorSearch
查询分析的数据。要了解更多信息,请参阅 Atlas Vector Search 概述。
要使用以下操作符对string字段运行查询,必须将该字段索引为Atlas Search token
类型:
要了解更多信息,请参阅每个操作符的相关文档。
查看 token
类型的行为
当您将字段索引为token
类型时,Atlas Search 会将字符串中的术语作为单个术语(可搜索术语)进行索引,并将它们存储在列式存储中,以便进行高效的筛选或排序操作。您可以使用规范化器来转换词元。 默认情况下,规范化器设置为none
,因此 Atlas Search 按原始形式对字符串进行搜索索引。
Atlas Search string
和token
类型之间的主要区别在于,Atlas Search 为索引为string
类型的字段创建一个或多个词元,而 Atlas Search 仅为索引为token
类型的字段创建单个词元。
如果被索引为token
字段类型的字符串超过 8181 个字符,Atlas Search 会在索引之前将其截断为 8181 个字符。
查看 token
类型限制
当您将字段索引为token
类型时,您也必须将该字段索引为string
类型才能使用文本、短语等操作符查询文本值。 对于以下操作符,您无需将字段索引为string
类型也可查询字段中的文本值:
您无法将索引为embeddedDocuments类型的字段的子字段索引为token
类型。
为 token
类型定义索引
要定义 token
类型的索引,请在 Atlas UI 中选择您的首选配置方法,然后选择数据库和集合。
单击 Refine Your Index 配置索引。
在 Field Mappings 部分中,单击 Add Field 打开 Add Field Mapping 窗口。
单击 Customized Configuration(连接)。
从 Field Name 下拉菜单中选择要索引的字段。
注意
您无法对字段名称开头包含美元 (
$
) 符号的字段创建索引。单击 Data Type(添加数据)下拉列表并选择 Token(插入文档)。
(可选)展开并配置该字段的 Token Properties。要了解更多信息,请参阅配置
token
字段属性。单击 Add(连接)。
以下是 token
类型的 JSON 语法。将默认索引定义替换为以下内容。要了解有关字段的更多信息,请参阅字段属性。
{ "mappings": { "dynamic": true|false, "fields": { "<field-name>": { "type": "token", "normalizer": "lowercase | none" } } } }
配置 token
字段属性
Atlas Search token
类型采用以下参数:
选项 | 类型 | 必要性 | 说明 | 默认 |
---|---|---|---|---|
| 字符串 | 必需 | 标识此字段类型的人类可读标签。值必须是 | |
| 字符串 | Optional | 对字段值执行的转换类型。 值可以是以下之一:
如果未显式设置此选项,则默认为 |
|
尝试 token
类型的示例
以下索引定义示例使用 sample_mflix.movies 集合。如果您的集群上已加载示例数据,则可以使用 Atlas 用户界面中的可视化编辑器或 JSON 编辑器来配置索引。选择首选配置方法后,选择数据库和集合并优化索引以添加字段映射。
以下索引定义将title
字段中的字符串值索引为 Atlas Search token
类型,并将字段值转换为lowercase
,这允许您执行以下操作:
在 Add Field Mapping 窗口中,从 Field Name 下拉列表中选择 title。
单击 Data Type(添加数据)下拉列表并选择 Token(插入文档)。
展开Token Properties并从Normalizer下拉列表中选择
lowercase
。单击 Add(连接)。
将默认索引定义替换为以下索引定义。
{ "mappings": { "dynamic": false, "fields": { "title": { "type": "token", "normalizer": "lowercase" } } } }
以下索引定义将 genres
字段索引为 string
和 token
类型,以返回以下内容:
在 Add Field Mapping 窗口中,从 Field Name 下拉列表中选择 genres。
单击 Data Type(添加数据)下拉列表并选择 Token(插入文档)。
单击 Add(连接)。
重复步骤 1,并从 Data Type 下拉列表中选择 String。
查看 String Properties 的默认设置,然后单击 Add。
将默认索引定义替换为以下索引定义。
{ "mappings": { "dynamic": false, "fields": { "genres": [{ "type": "string" }, { "type": "token" }] } } }