什么是 Atlas Search?
Atlas Search 是一种嵌入式全文搜索,可为您提供无缝、可扩展的体验,以构建基于相关性的应用功能,并消除与数据库并行运行单独搜索系统的需求。
您可以使用 Atlas Search 对集群上的数据进行细粒度的文本索引和数据查询。Atlas Search 提供多种 文本分析器、丰富的查询语言以创建复杂的搜索逻辑、可定制的基于分数的结果排名,以及自动完成、分页和分面等适用于应用程序的高级搜索功能。
用例
Atlas Search 支持多种用例,包括以下内容:
键入时搜索:要在用户在应用程序的搜索字段中输入字符时更准确地预测单词,您可以使用 Atlas Search 自动完成操作符来预测并返回部分单词的结果。要了解详情,请参阅如何运行自动完成和部分匹配 Atlas Search 查询。
分面搜索:为了让应用程序用户能够通过使用过滤器来缩小搜索结果范围,您可以使用 Atlas Search
facet
Collector 来构建分面,这些分面会根据分面字段中的值或范围对结果进行分组。要了解详情,请参阅如何在 Atlas Search 中使用分面。分页结果:要对结果页面进行分组,并实现“下一页”和“上一页”等功能,可以使用 Atlas Search
searchSequenceToken
以及searchAfter
和searchBefore
选项来按顺序遍历页面和跨页跳转。要了解详情,请参阅如何对结果进行分页。
关键概念
以下概念构成了 Atlas Search 的基础,对于优化您的应用程序至关重要。
什么是搜索查询?
搜索查询会查阅搜索索引以返回一组结果。搜索查询不同于传统的数据库查询,因为它们旨在满足更一般的信息需求。数据库查询必须遵循严格的语法,而搜索查询可以用于简单的文本匹配,但它也可以查找相似的短语、数字或日期范围,或者使用正则表达式或通配符。
Atlas Search 查询采用 聚合管道阶段的形式。Atlas Search 提供 $search
和 $searchMeta
阶段,可与查询管道中的其他聚合管道阶段结合使用。Atlas Search 提供查询操作符和收集器,您可以在这些聚合管道阶段中使用它们。
要了解详情,请参阅查询和索引。
什么是搜索索引?
在搜索环境中,索引是一种数据结构,以便于搜索的格式对数据进行分类。使用搜索索引,可以更快地检索包含特定术语的文档,而不必扫描整个集合。尽管 Atlas Search 索引和 MongoDB 索引都能加速数据检索,但它们并不相同。就像书本后面的索引一样,搜索索引是术语与包含术语的文档之间的映射。搜索索引还包含其他相关的元数据,例如术语在文档中出现的位置信息。
您可以使用静态映射在单个字段或多个字段上创建 Atlas Search 索引。或者,您可以启用动态映射,以自动索引文档中所有可动态索引的字段。您可以在多态数据和嵌入式文档上创建 Atlas Search 索引,或为特定使用案例(如键入时搜索或分面搜索)创建 Atlas Search 索引。
要了解详情,请参阅管理 Atlas Search 索引。
什么是搜索分析器和词元?
创建搜索索引时,必须首先将数据转换为词元或术语序列。分析器通过以下步骤来简化此过程,包括:
标记化:将字符串中的单词分解为可索引的标记。例如用空格和标点符号划分句子。
规范化:整理数据,使其呈现方式一致且更易于分析。例如,将文本转换为小写或删除称为停用词的不需要的词。
词干提取:将单词简化为其词根形式。例如,忽略后缀、前缀和复数形式。
分词的细节因语言而异,可能需要做出其他选择。使用哪种分析器取决于您的数据和应用程序。
Atlas Search 提供了一些内置分析器。您还可以创建自己的自定义分析器。您可以使用多分析器指定备用的分析器。
要了解更多信息,请参阅使用分析器处理数据。
什么是搜索分数?
查询结果中的每个文档都会收到一个相关性分数,该分数可以按从最高相关性到最低相关性的顺序返回查询结果。在最简单的评分形式中,如果查询词频繁出现在某一文档中,则该文档的评分较高;如果该查询词出现在集合内的很多文档中,则其评分较低。也可以自定义评分。针对特定域定制搜索通常意味着通过以其他方式提升、衰减或修改基于相关性的默认分数来进行自定义。
要了解详情,请参阅评分文档。
后续步骤
要亲身体验创建 Atlas Search 索引和对示例数据运行 Atlas Search 查询,请尝试 Atlas Search 快速入门。