Docs 菜单
Docs 主页
/
MongoDB Atlas
/

Atlas Search 概述

在此页面上

  • Atlas Search 基础知识
  • 索引
  • 分词器
  • 查询
  • 评分
  • Atlas Search 架构
  • 关于 mongot 进程

MongoDB 的 Atlas Search 允许对 Atlas 集群上的数据进行细粒度的文本索引和数据查询。它为您的应用程序提供高级搜索功能,无需任何额外的管理或在数据库旁边有单独的搜索系统。Atlas Search 提供了多种 文本分析器的选项,这是一种丰富的查询语言,它使用 Atlas Search 聚合管道阶段(如 $search$searchMeta )与其他 MongoDB 聚合管道阶段结合使用,以及基于分数的结果排名。

提示

使用 Atlas Search Playground 快速试用 Atlas Search,无需 Atlas 帐户、集群或集合。如需了解更多信息,请参阅 文档 。

以下概念构成了 Atlas Search 的基础,对于优化您的应用程序至关重要。

在搜索环境中,索引是一种数据结构,以便于搜索的格式对数据进行分类。使用搜索索引,可以更快地检索包含特定术语的文档,而不必扫描整个集合。尽管 Atlas Search 索引和 MongoDB 索引都能加速数据检索,但它们并不相同。就像书本后面的索引一样,搜索索引是术语与包含术语的文档之间的映射。搜索索引还包含其他相关的元数据,例如术语在文档中出现的位置信息。

在任何搜索应用程序中,通常都需要创建至少一个搜索索引。有关更多信息,请参阅创建和管理 Atlas Search 索引。

创建搜索索引时,必须首先将数据转换为词元术语序列。分析器通过以下步骤来简化此过程,包括:

  • 标记化:将字符串中的单词分解为可索引的标记。例如用空格和标点符号划分句子。

  • 规范化:整理数据,使其呈现方式一致且更易于分析。例如,将文本转换为小写或删除称为停用词的不需要的词。

  • 词干提取:将单词简化为其词根形式。例如,忽略后缀、前缀和复数形式。

分词的细节因语言而异,可能需要做出其他选择。使用哪种分析器取决于您的数据和应用程序。有关更多信息,请参阅使用分析器处理数据

搜索查询会查阅索引以返回一组结果。搜索查询不同于传统的数据库查询,因为它们旨在满足更一般的信息需求。数据库查询必须遵循严格的语法,而搜索查询可以用于简单的文本匹配,但它也可以查找相似的短语、数字或日期范围,或者使用正则表达式或通配符。

有关更多信息,请参阅创建和运行 Atlas Search 查询

每个文档都会收到一个相关性分数,该分数可以按从最高相关性到最低相关性的顺序返回查询结果。在最简单的评分形式中,如果查询词频繁出现在某一文档中,则该文档的评分较高;如果该查询词出现在集合内的很多文档中,则其评分较低。也可以自定义评分。针对特定域定制搜索通常意味着通过以其他方式提升、衰减或修改基于相关性的默认分数来进行自定义。

有关更多信息,请参阅对文档进行评分

Atlas Search mongot 流程建立在 Apache Lucene 之上,与 mongod 数据库进程接口,用于创建和管理您的全文和向量搜索索引和查询。

mongot 进程执行以下任务:

  1. 根据该集合的索引定义中的规则来创建 Atlas Search 索引。

  2. 监控文档当前状态的变更流,以及已定义 Atlas Search 索引的集合索引。

  3. 处理 Atlas Search 查询,并将匹配文档的文档 ID 和其他搜索元数据返回给 mongod,然后执行完整的文档查找并将结果返回给客户端。

您可以选择一种部署模式,其中 Atlas Search mongot 进程与 mongod 进程一起在 Atlas 集群中的每个节点上运行,或者 mongot 进程在不同的搜索节点上运行。为了测试搜索查询和设计应用程序原型,您可以选择 mongotmongod 进程在同一个节点上运行的默认部署模型。但是,对于生产就绪型应用程序,请在不同的搜索节点上部署 mongot 以避免生产环境中 mongotmongod 进程之间出现任何资源争用。

有关为预生产和生产环境选择部署类型的指导,请参阅Atlas Search 部署选项Atlas Vector Search 部署选项。

后退

Atlas Search