多分析器
您可以在索引定义中使用 multi
对象来指定备用分析器,用于对字段建立索引。除了默认分析器以外,在使用备用分析器对字段进行索引时,您可以使用默认分析器或备用分析器搜索集合。本页说明了如何使用 multi
在索引定义中指定备用分析器 。要了解有关使用备用分析器进行搜索的更多信息,请参阅构建查询路径。
限制
multi
路径选项仅适用于字符串类型的字段。
Atlas Search 不支持嵌套多层 multi
对象。
例子
以下示例索引定义使用 standard
分析器指定 sample_mflix.movies
集合中 title
字段上的索引。索引定义还指定关键字分析器作为 title
字段的备用分析器,名称为 keywordAnalyzer
。关键字分析器将整个字段作为单个词语进行索引,因此仅当搜索词和指定字段完全匹配时,它才会返回结果。
如果您将collection加载到集群上,则可以使用Atlas用户界面中的可视化编辑器或 JSON编辑器创建示例索引。选择首选配置方法后,选择数据库和collection。
单击 Refine Your Index 配置索引。
在 Field Mappings 部分中,单击 Add Field 打开 Add Field Mapping 窗口。
从 Field Name 下拉列表中选择
title
。单击 Data Type 下拉列表并选择 String(如果尚未选择)。
展开 String Properties 并进行以下更改:
索引分析器如果尚未选择,请从下拉菜单中选择lucene.standard
。Search Analyzer如果尚未选择,请从下拉菜单中选择lucene.standard
。索引选项使用默认offsets
。Store使用默认true
。忽略以上内容保留默认设置。规范使用默认include
。单击Add Multi Field可对
title
字段配置另一个分析器。在Multi Field Name字段中输入
keywordAnalyzer
。对 Multi Field Properties 进行以下更改:
索引分析器如果尚未选择,请从下拉菜单中选择lucene.keyword
。Search Analyzer如果尚未选择,请从下拉菜单中选择lucene.keyword
。索引选项使用默认offsets
。Store使用默认true
。忽略以上内容保留默认设置。规范使用默认include
。单击 Add(连接)。
单击 Save Changes(连接)。
单击 Create Search Index(连接)。
将默认索引定义替换为以下索引定义。
1 { 2 "mappings": { 3 "dynamic": false, 4 "fields": { 5 "title": { 6 "type": "string", 7 "analyzer": "lucene.standard", 8 "multi": { 9 "keywordAnalyzer": { 10 "type": "string", 11 "analyzer": "lucene.keyword" 12 } 13 } 14 } 15 } 16 } 17 } 单击 Next(连接)。
单击 Create Search Index(连接)。
以下查询使用名为 keywordAnalyzer
的备用分析器在Atlas Search中查找string The
Count of Monte Cristo
的精确匹配项。
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "text": { 5 "query": "The Count of Monte Cristo", 6 "path": { "value": "title", "multi": "keywordAnalyzer" } 7 } 8 } 9 }, 10 { 11 "$project": { 12 "title": 1, 13 "year": 1, 14 "_id": 0 15 } 16 } 17 ])
{ "title" : "The Count of Monte Cristo", "year" : 1934 } { "title" : "The Count of Monte Cristo", "year" : 1954 } { "title" : "The Count of Monte Cristo", "year" : 1998 }
相比之下,使用standard
分析器进行相同的查询将找到标题中包含the
或Count
或of
或Monte
或Cristo
一词的所有电影。
Atlas Search 使用分析器为结果中的文档创建以下词元(可搜索词语):
标题 | 标准分析器词元 | 关键字分析器词元 |
---|---|---|
The Count of Monte Cristo | the , count , of , monte , cristo | The Count of Monte Cristo |