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