您可以在索引定义中使用 multi 对象指定还用于对字段进行索引的备用分析器。除了默认分析器以外,在使用备用分析器对字段进行索引时,您可以使用默认分析器或备用分析器搜索集合。本页说明了如何使用 multi 在索引定义中指定备用分析器。
Multi Analyzer 限制
multi 路径选项仅适用于字符串类型的字段。
MongoDB Search 不支持嵌套多个 multi 对象层。
示例
以下示例展示了 sample_mflix.movies 集合中字段的索引定义。如果已将集合加载到集群上,则可使用 Atlas 用户界面中的可视化编辑器或 JSON 编辑器或使用 mongosh创建示例索引。
单字段示例
以下示例索引定义使用 standard 分析器指定了 title 字段的索引。此索引定义还指定 lucene.french 分析器作为 title 字段的备用分析器,且名称为 frenchAnalyzer。
以下查询使用名为 frenchAnalyzer 的备用分析器来搜索字符串 liberte。
结果中的文档是匹配项,因为 frenchAnalyzer 将索引字符串 è Nous la Libertè 和查询术语liberte 缩减为基本词 libert。 使用 standard分析器进行搜索时, MongoDB搜索不会返回此文档,因为它不会删除变音符号。每个分析器为索引和查询生成以下词元(可搜索词):
分析器 | Index Tokens | 查询标记 |
|---|---|---|
标准分析器 |
|
|
French 分析器 |
|
|
多字段示例
以下示例索引定义使用 standard 分析器指定 title 与 plot 字段的索引。此索引定义还指定 lucene.french 作为 title 与 plot 字段的备用分析器。
以下查询使用名为 frenchAnalyzer 的备用分析器在 title 与 plot 字段中搜索字符串 revolution 的匹配项。
结果中的文档在 title 和 plot 字段中包含查询术语。每个分析器为结果中每个文档的 title 字段创建以下标记(可搜索术语):
年份 | 分析器 | Index Tokens | 查询标记 |
2012 | 标准分析器 |
|
|
1985 | 标准分析器 |
|
|
2014 | 标准分析器 |
|
|
1970 | 标准分析器 |
|
|
1989 | 标准分析器 |
|
|
对于这些结果中的第五个文档,frenchAnalyzer 删除了 title 字段中的标注字符,以便将此文档与查询词相匹配。