MongoDB文本搜索
创建文本索引并执行全文搜索,支持中文分词和权重排序。 · 难度:入门 · +15XP
文本搜索
MongoDB 提供文本索引(text index)来支持全文搜索。可以搜索多个字段,支持语言分词、停用词和词干提取。对于中文,需要配置 ICU 分词器(MongoDB 4.2+)。
创建文本索引
db.articles.createIndex({ title: 'text', content: 'text' });
// 也可以指定权重
db.articles.createIndex({ title: 'text', content: 'text' }, { weights: { title: 10, content: 5 } });执行搜索
db.articles.find({ $text: { $search: 'mongodb 数据库' } });
// 按相关性排序
db.articles.find({ $text: { $search: 'mongodb' } }, { score: { $meta: 'textScore' } })
.sort({ score: { $meta: 'textScore' } });中文搜索注意
MongoDB 文本索引默认使用英文分词。对于中文,建议:
- 使用 MongoDB 4.2+ 自动识别中文
- 或预先对中文进行分词存储为数组
表格:文本搜索操作符
| 操作符 | 说明 |
|---|---|
| $text | 执行文本搜索 |
| $search | 搜索关键词 |
| $language | 指定语言(如 'zh') |
| $caseSensitive | 是否区分大小写 |
练习提示: 创建一个包含中文文章的集合,建立文本索引,搜索“人工智能”并观察排序结果。