keyword 分析器接受字符串或字符串数组以作为参数,并将它们作为单个词语(词元)进行索引。仅返回与字段精确匹配的结果。它将所有文本保留为原始字母大小写。
如果您选择 Refine Your Index, Atlas用户界面会在 Index Configurations 部分中显示标题为 View text analysis of your selected index configuration 的部分。如果展开此部分, Atlas用户界面会显示 keyword分析器为每个示例字符串生成的索引和搜索词元。 当您在Atlas用户界面Visual Editor 中创建或编辑索引时,您可以看到 keyword分析器为内置示例文档和查询字符串创建的词元。
重要
MongoDB Search 不会对分析器词元大小超过 32766 字节的字符串字段索引。 如果使用关键字分析器,则不会对超过 32766 字节的字符串字段编制索引。
例子
以下示例索引定义使用 keyword 分析器指定 sample_mflix.movies 集合中 title 字段上的索引。要跟随此示例,请在集群上加载示例数据,并使用mongosh或按照创建 MongoDB Search 索引教程中的步骤导航到 Atlas UI 中的 Create a Search
Index 页面。
然后,使用 movies 集合作为数据源,按照示例过程从 mongosh 或 Atlas 用户界面 Visual Editor 或 JSON editor 创建索引。
以下查询在 title 字段中搜索短语 Class Action。
MongoDB Search 返回文档,因为它将查询术语Class Action 与使用 lucene.keyword分析器为字段中的文本创建的单个词元 Class Action 进行匹配。相比之下, MongoDB Search 不会为以下查询返回任何结果:
db.cases.aggregate([ { "$search": { "text": { "query": "action", "path": "title" } } } ])
集合中的许多文档都包含 string action。keyword 分析器未返回此查询的任何结果。它只匹配搜索术语与整个字段内容匹配的文档。如果使用 标准分析器 或 简单分析器 对字段进行索引,MongoDB Search 将返回许多结果。结果包括标题为 Class Action 的文档。这些分析器会创建类似于以下的标记,并将其与查询术语匹配:
分析器 | 输出词元 | matches action | matches Class Action |
|---|---|---|---|
关键字分析器词元 |
| X | √ |
标准分析器词元 |
| √ | √ |
简单分析器词元 |
| √ | √ |