“文档” 菜单
文档首页
/
MongoDB 阿特拉斯
/ / / /

关键字分析器

keyword 分析器接受字符串或字符串数组以作为参数,并将它们作为单个词语(词元)进行索引。仅返回与字段精确匹配的结果。它将所有文本保留为原始字母大小写。

重要

Atlas Search 不会对大小超过 32766 字节的字符串字段进行索引。

以下示例索引定义使用keyword分析器指定 sample_mflix.movies集合中的title字段上的索引。如果已将集合加载到集群上,则可以使用 Atlas 用户界面可视化编辑器或 JSON编辑器创建示例索引。选择首选配置方法后,选择数据库和集合。

以下查询在 title 字段中搜索短语 Class Action

db.movies.aggregate([
{
"$search": {
"text": {
"query": "Class Action",
"path": "title"
}
}
},
{
"$project": {
"_id": 0,
"title": 1
}
}
])
[
{
title: 'Class Action'
}
]

Atlas Search 返回文档,因为它将查询词语 Class Action 与使用 lucene.keyword 分析器为字段中的文本创建的单个词元 Class Action 进行匹配。相比之下,Atlas Search 不会为以下查询返回任何结果:

db.cases.aggregate([
{
"$search": {
"text": {
"query": "action",
"path": "title"
}
}
}
])

集合中的很多文档都包含字符串 action,但 keyword 分析器仅匹配搜索词语与字段的全部内容精确匹配的文档。对于前面的查询,keyword 分析器不会返回任何结果。不过,如果您使用标准分析器简单分析器对该字段进行索引,Atlas Search 将在结果中返回多个文档,包括 title 字段值为 Class Action 的文档,因为它创建类似于以下内容的词元,然后将其与查询词语进行匹配:

分析器
输出词元
matches action
matches Class Action
关键字分析器词元
Class Action
X
标准分析器词元
classaction
简单分析器词元
classaction
← 空格
语言 →