简单分析器
只要找到非字母字符,例如空格、标点符号或一个或多个数字, simple
分析器就会将文本划分为可搜索术语(词元)。它将所有文本转换为小写。
重要
Atlas Search 不会对大小超过 32766 字节的字符串字段进行索引。
例子
以下示例索引定义使用simple
分析器指定 sample_mflix.movies集合中的title
字段上的索引。如果已将集合加载到集群上,则可以使用 Atlas 用户界面可视化编辑器或 JSON编辑器创建示例索引。选择首选配置方法后,选择数据库和集合。
以下查询在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
创建令牌。