“文档” 菜单
文档首页
/
MongoDB Manual
/ /

文本索引

在此页面上

  • $text 支持
  • 用例
  • 开始体验
  • 详情
  • 复合文本索引
  • sparse 属性
  • 存储要求和性能成本
  • 了解详情

注意

本页介绍了自托管(非 Atlas)部署的文本查询功能。对于托管在 MongoDB Atlas 上的数据,MongoDB 提供了一种改进的全文查询解决方案, Atlas Search。

文本索引支持对包含字符串内容的字段进行文本搜索查询。文本索引可提高在字符串内容中搜索特定单词或短语时的性能。

一个集合只能有一个文本索引,但该索引可以包含多个字段。

要创建文本索引,请使用以下原型:

db.<collection>.createIndex(
{
<field1>: "text",
<field2>: "text",
...
}
)

文本索引支持在本地部署上执行 $text查询操作。要使用$text ,您必须创建文本索引。

注意

$text 为自管理(非 Atlas)部署提供文本查询功能。对于 MongoDB Atlas 上托管的数据,MongoDB 提供了改进的全文查询解决方案Atlas Search。

在线商店的clothing集合中的文档包括一个description字段,其中包含一串描述每个商品的文本字符串。要查找由silk制成的衣服,请在description字段上创建文本索引,并对包含关键字silk的文档运行$text查询。搜索会返回在description字段中提及silk的所有文档。

要了解如何创建文本索引以及如何在具体应用场景中使用文本索引,请参阅:

本节介绍文本索引的详细信息。

对于包含文本索引键以及其他类型键的复合索引,只有文本索引字段决定索引是否引用了文档。其他键不决定索引是否引用了文档。

文本索引始终是稀疏索引。当您创建文本索引时,MongoDB 会忽略 sparse 选项。

如果现有或新插入的文档缺少文本索引字段(或该字段为空或为空数组),MongoDB 不会为该文档添加文本索引项。

文本索引的存储要求和性能成本如下:

  • 文本索引可能会占用大量 RAM。对于所有插入的文档,文本索引都包含与该文档索引字段中每个经词干处理后不同的单词一一对应的索引项。

  • 构建文本索引与构建大型多键索引类似,但比对相同数据构建简单有序(标量)的索引耗时更长。

  • 当构建占用大量 RAM 的文本索引时,请确保对打开文件描述符有足够高的限制。请参见建议设置

  • 文本索引会影响写入性能,因为对于所有新的源文档, MongoDB 必须为其索引字段中每个经词干处理后不同的单词添加一个索引项。

  • 文本字符串的每个单词在文本索引中被单独存储。文本索引不存储短语或文档中单词邻近程度的相关信息。这样一来,当整个集合能加载到 RAM 中时,指定多个单词作为查询条件的查询将运行得更快。

← 多键索引边界