MongoDB 面试题
目录

MongoDB 的文本搜索 (Text Search) 功能是如何使用的?

· 约 3 分钟读完 · 第 94 / 122 章

推荐答案

在 MongoDB 中,文本搜索功能允许你在集合中的字符串字段上执行全文搜索。要使用文本搜索功能,首先需要在目标字段上创建文本索引,然后使用 $text 操作符进行查询。

创建文本索引

你可以在单个字段或多个字段上创建文本索引。例如:

执行文本搜索

创建索引后,可以使用 $text 操作符进行搜索:

$search 参数可以接受多个搜索词,MongoDB 会返回包含任意一个搜索词的文档。

排序搜索结果

你还可以使用 $meta 操作符对搜索结果按相关性排序:

本题详细解读

文本索引的创建

MongoDB 的文本索引支持对字符串内容进行全文搜索。创建文本索引时,MongoDB 会对字段内容进行分词处理,并建立倒排索引以支持高效的文本搜索。

  • 单字段文本索引:在单个字段上创建文本索引,适用于只需要对某个特定字段进行搜索的场景。
  • 多字段文本索引:在多个字段上创建文本索引,适用于需要在多个字段中进行搜索的场景。

文本搜索的语法

$text 操作符用于执行文本搜索,$search 参数指定搜索词。MongoDB 支持以下搜索语法:

  • 简单搜索:直接使用搜索词,如 "searchTerm"。
  • 短语搜索:使用双引号包裹短语,如 "\"search phrase\""。
  • 排除词:使用减号 - 排除特定词,如 "searchTerm -excludeTerm"。

相关性排序

MongoDB 的文本搜索会为每个匹配的文档计算一个相关性分数(textScore),你可以使用 $meta 操作符获取该分数,并根据分数对结果进行排序。

注意事项

  • 文本索引不支持中文分词,如果需要支持中文搜索,可能需要使用第三方插件或工具。
  • 文本索引会占用较多的存储空间,因此在创建索引时需要权衡存储和性能。

通过以上步骤,你可以在 MongoDB 中高效地使用文本搜索功能来查询和分析文本数据。