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

关键字分析器

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

提示

要进行精确匹配,可以不使用 keyword 分析器,而是将字段索引为 Atlas Search令牌类型,然后使用等号操作符搜索字段。

当您 Refine Your Index 时,您可以在 Atlas UI Visual Editor 中看到 keyword 分析器为内置静态字符串创建的词元。如果扩展 View text analysis of your selected index configurationIndex Configurations 部分将显示 keyword 分析器创建的索引和搜索词元,以帮助您选择在索引中使用的分析器。

重要

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

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

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

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

  3. 单击 Customized Configuration(连接)。

  4. Field Name 下拉列表中选择 title

  5. 单击 Data Type 下拉列表并选择 String(如果尚未选择)。

  6. 展开 String Properties 并进行以下更改:

    索引分析器

    从下拉列表中选择 lucene.keyword

    Search Analyzer

    从下拉列表中选择 lucene.keyword

    索引选项

    使用默认 offsets

    Store

    使用默认 true

    忽略以上内容

    保留默认设置。

    规范

    使用默认 include

  7. 单击 Add(连接)。

  8. 单击 Save Changes(连接)。

  9. 单击 Create Search Index(连接)。

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

    {
    "mappings": {
    "fields": {
    "title": {
    "type": "string",
    "analyzer": "lucene.keyword"
    }
    }
    }
    }
  2. 单击 Next(连接)。

  3. 单击 Create Search Index(连接)。

以下查询在 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

标准分析器词元

class, action

简单分析器词元

class, action

后退

Whitespace