Docs 菜单
Docs 主页
/
MongoDB Atlas
/ / / /

如何对字符串字段进行索引

在此页面上

  • 查看 string 类型的限制
  • string 类型定义索引
  • 配置 string 字段属性
  • string 类型使用示例

您可以使用 Atlas Search string 类型对 string 字段进行索引。您可以使用 Atlas Search phrasequeryStringspantextwildcardregexmoreLikeThis 操作符查询作为 string 类型进行索引的字段。

如果您启用动态映射,Atlas Search 会自动为 string 类型的字段创建索引。您可以使用 Atlas UI 中的可视化编辑器JSON 编辑器为字段编制 string 类型的索引。

对于 facetautocomplete 查询,您不能使用 Atlas Search string 类型对字段进行索引。在对 Atlas Search 结果进行排序时,您不能使用 string 类型对字段进行索引。相反,您必须使用静态映射将字符串字段作为以下类型进行索引:

  • stringFacet 类型,用于对字符串字段运行 facet 查询。请注意,对于分面查询,Atlas Search 不会动态对字符串字段进行索引。

  • autocomplete 类型,用于对字符串字段运行 autocomplete 操作符查询。请注意,对于 autocompletion 查询,Atlas Search 不会动态对字符串字段进行索引。

  • 词元类型,按字符串字段对 Atlas Search 结果进行排序。Atlas Search 不会动态对字符串字段编制索引来对结果进行排序

  • token 类型,用于通过 equalsinrange 操作符查找查询的精确匹配项。在使用这些操作符进行查询时,Atlas Search 不会动态将字符串字段作为 token 类型进行索引。

重要

Atlas Search不会对分析器词元大小超过32766字节的字符串字段进行索引。如果使用关键字分析器,则不会对超过32766字节的字符串字段编制索引。

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

  1. 单击 Refine Your Index 配置索引。

  2. Field Mappings 部分中,单击 Add Field 打开 Add Field Mapping 窗口。

  3. 单击 Customized Configuration(连接)。

  4. Field Name 下拉菜单中选择要索引的字段。

    注意

    您无法对字段名称开头包含美元 ($) 符号的字段创建索引。

  5. 单击 Data Type(添加数据)下拉列表并选择 String(插入文档)。

  6. (可选)展开并配置该字段的 String Properties。要了解更多信息,请参阅配置 string 字段属性。

  7. (可选)单击 Add Multi Field,为该字段配置下列备用分析器设置:

    1. Multi Field Name 字段中输入备选分析器的名称。

    2. Multi Field Properties 下配置备用分析器的字符串字段属性。要了解更多信息,请参阅配置 string 字段属性。

    3. (可选)单击 Add Another Mult Field 并重复步骤 1b,为该字段配置更多分析器。

  8. 单击 Add(连接)。

以下是 string 类型的 JSON 语法。将默认索引定义替换为以下内容。要了解有关字段的更多信息,请参阅字段属性

{
"mappings": {
"dynamic": true|false,
"fields": {
"<field-name>": {
"type": "string",
"analyzer": "<atlas-search-analyzer>",
"searchAnalyzer": "<atlas-search-analyzer>",
"indexOptions": "docs|freqs|positions|offsets",
"store": true|false,
"ignoreAbove": <integer>,
"multi": {<string-field-definition>},
"norms": "include|omit"
}
}
}
}

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

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

用于对字段进行索引的内置或自定义分析器名称。如果没有指定值,则默认按以下顺序继承分析器:

  1. 索引analyzer 选项(如果指定)。

  2. lucene.standard 分析器。

searchAnalyzer
字符串
Optional

查询字段时使用的分析器。如果没有指定值,则默认按以下顺序继承分析器:

  1. 该字段的 analyzer 选项(如果已指定)。

  2. 索引searchAnalyzer 选项(如果指定)。

  3. 索引analyzer 选项(如果指定)。

  4. lucene.standard 分析器。

indexOptions
字符串
Optional

要为索引字段存储的信息量。值可以是以下值之一:

  • docs — 仅对文档进行索引。忽略索引词语的频率和位置。仅在 score 中反映出现一次该词语。

  • freqs — 仅对文档和词语频率进行索引。忽略索引词语的位置。

  • positions — 对文档、词语频率和词语位置进行索引。

  • offsets —(默认)对文档、词语频率、词语位置和词语偏移量进行索引。该选项是 highlight 所必需的。

offsets
store
布尔
Optional

该标记指示是否在索引中存储确切的文档文本以及分析的值。值可以是 truefalse。对于 highlight,该选项的值必须为 true

为了减少索引大小和性能资源使用量,我们建议将 store 设置为 false。要了解更多信息,请参阅 Atlas Search 索引性能

true
ignoreAbove
int
Optional
要进行索引的字段值中的最大字符数。如果字段值大于指定的字符数,则 Atlas Search 不会进行索引。
multi
字符串字段定义
Optional
要使用 multi 对象中指定的备用分析器名称进行索引的字符串字段。要了解有关指定 multi 对象的更多信息,请参阅多分析器和下面的示例
norms
字符串
Optional

该字符串指定评分时是在结果中包括还是忽略字段长度。字段长度是由分析器为字段生成的词元数量决定的。值可以是以下值之一:

  • include — 在评分时包括字段长度。

  • omit — 在评分时忽略字段长度。

如果值为 include,Atlas Search 会在评分时使用字段的长度来确定较高的分数。例如,如果两个文档与 Atlas Search 查询匹配,则字段长度较短的文档得分高于字段长度较长的文档。

如果值为 omit,则 Atlas Search 在评分时忽略字段长度。

include

以下索引定义示例使用 sample_mflix.movies 集合。如果您的集群上已加载示例数据,则可以使用 Atlas 用户界面中的可视化编辑器或 JSON 编辑器来配置索引。选择首选配置方法后,选择数据库和集合并优化索引以添加字段映射。

下面的索引定义将 title 字段中的字符串值索引编制为 Atlas Search string 类型:

  1. Add Field Mapping 窗口中,从 Field Name 下拉列表中选择 title

  2. 单击 Data Type(添加数据)下拉列表并选择 String(插入文档)。

  3. 查看 String Properties 的默认设置。

  4. 单击 Add(连接)。

将默认索引定义替换为以下索引定义。

{
"mappings": {
"dynamic": false,
"fields": {
"title": {
"type": "string"
}
}
}
}

除了默认的 lucene.standard 分析器之外,以下索引定义还使用 lucene.englishlucene.french 分析器为 fullplot 字段中的字符串值编制索引:

  1. Add Field Mapping 窗口中,从 Field Name 下拉列表中选择 fullplot

  2. 单击 Data Type(添加数据)下拉列表并选择 String(插入文档)。

  3. 查看 String Properties 的默认设置。

  4. 单击 Add Multi Field,在 Multi Field Name 字段中输入 english,然后配置以下 Multi Field Properties

    索引分析器
    选择lucene.english lucene.language
    Search Analyzer
    选择lucene.english lucene.language
  5. 单击 Add Another Multi Field,在 Multi Field Name 字段中输入 french,然后配置以下 Multi Field Properties

    索引分析器
    选择lucene.french lucene.language
    Search Analyzer
    选择lucene.french lucene. language
  6. 单击 Add(连接)。

将默认索引定义替换为以下索引定义。

{
"mappings": {
"dynamic": false,
"fields": {
"fullplot": {
"type": "string",
"multi": {
"english": {
"type": "string",
"analyzer": "lucene.english"
},
"french": {
"type": "string",
"analyzer": "lucene.french"
}
}
}
}
}
}

后退

ObjectId