简单分析器
只要找到非字母字符,例如空格、标点符号或一个或多个数字, simple
分析器就会将文本划分为可搜索术语(词元)。它将所有文本转换为小写。
当您 Refine Your Index 时,您可以在 Atlas UI Visual Editor 中看到 simple
分析器为内置静态字符串创建的词元。如果扩展 View text
analysis of your selected index configuration,Index
Configurations 部分将显示 simple
分析器创建的索引和搜索词元,以帮助您选择在索引中使用的分析器。
重要
Atlas Search 不会索引分析器令牌大小超过 32766 字节的字符串字段。如果使用关键字分析器,则不会对超过 32766 字节的字符串字段编制索引。
例子
以下示例索引定义使用 simple
分析器指定 sample_mflix.movies 集合中的 title
字段上的索引。如果您将集合加载到集群上,则可以使用 Atlas 用户界面可视化编辑器或 JSON 编辑器创建示例索引。在选择所需的配置方法后,选择数据库和集合。
单击 Refine Your Index 配置索引。
在 Field Mappings 部分中,单击 Add Field 打开 Add Field Mapping 窗口。
单击 Customized Configuration(连接)。
从 Field Name 下拉列表中选择
title
。单击 Data Type 下拉列表并选择 String(如果尚未选择)。
展开 String Properties 并进行以下更改:
索引分析器从下拉列表中选择lucene.simple
。Search Analyzer从下拉列表中选择lucene.simple
。索引选项使用默认offsets
。Store使用默认true
。忽略以上内容保留默认设置。规范使用默认include
。单击 Add(连接)。
单击 Save Changes(连接)。
单击 Create Search Index(连接)。
将默认索引定义替换为以下索引定义。
{ "mappings": { "fields": { "title": { "type": "string", "analyzer": "lucene.simple" } } } } 单击 Next(连接)。
单击 Create Search Index(连接)。
以下查询在title
字段中搜索词语lion
,并将输出限制为五个结果。
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "text": { 5 "query": "lion", 6 "path": "title" 7 } 8 } 9 }, 10 { 11 "$limit": 5 12 }, 13 { 14 "$project": { 15 "_id": 0, 16 "title": 1 17 } 18 } 19 ])
[ { title: 'White Lion' }, { title: 'The Lion King' }, { title: 'The Lion King 1 1/2' }, { title: 'The Lion King 1 1/2' }, { title: 'Lion's Den' }, ]
Atlas Search 使用lucene.simple
分析器对title
字段中的文本执行以下操作,从而返回这些文档:
将文本转换为小写。
通过在存在非字母字符的位置分割文本来创建单独的词元。
下表显示 Atlas Search 使用 简单分析器为结果中的文档创建的词元,并与使用标准分析器和空格分析器创建的词元进行对比:
标题 | 简单分析器词元 | 标准分析器词元 | 空白分析器令牌 |
---|---|---|---|
White Lion | white , lion | white , lion | White , Lion |
The Lion King | the , lion , king | the , lion , king | The , Lion , King |
The Lion King 1 1/2 | the , lion , king | the , lion , king , 1 , 1 , 2 | The , Lion , King , 1 , 1/2 |
Lion's Den | lion , s , den | lion's , den | Lion's , Den |
Atlas Search 在结果中返回文档 Lion's Den
,因为 simple
分析器为 lion
创建了一个单独的词元,该词元与查询术语 lion
匹配。相比之下,如果使用标准分析器或空格分析器对字段进行索引, Atlas Search 将在查询结果中返回一些文档,但不会返回 Lion's Den
,因为这些分析器会创建词元 lion's
和 Lion's
,但不为 lion
创建词元。