文档菜单
文档首页
/
MongoDB 手册
/ /

自托管部署中的文本索引

本页内容

  • $text 支持
  • 用例
  • 入门
  • 详细信息
  • 复合文本索引
  • sparse 属性
  • 存储要求和性能成本
  • 了解更多

注意

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

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

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

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

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

文本索引支持$text 查询操作。要使用 $text,您必须创建一个文本索引。

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

要了解如何创建文本索引以及如何在特定用例中使用文本索引,请参阅

本节描述了文本索引的详细信息。

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

文本索引始终是 稀疏 的。当你创建一个文本索引时,MongoDB 忽略 稀疏 选项。

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

文本索引具有以下存储需求和性能成本

  • 文本索引可能会占用大量 RAM。对于每个文档中每个索引字段的每个插入的文档,它们包含一个索引条目,用于每个独特的词干处理后单词。

  • 构建文本索引类似于构建一个大的 多键索引,但比在相同数据上构建简单的有序(标量)索引所需的时间更长。

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

  • 文本索引会影响写入性能,因为 MongoDB 必须为每个新源文档中每个索引字段的每个独特的词干处理后单词添加索引条目。

  • 文本索引存储文本字符串的各个单词。它们不存储短语或文档中单词之间的邻近信息。因此,当整个集合适合 RAM 时,指定多个单词的查询运行速度更快。

返回

语言