Appearance
MongoDB 全文检索
创建文本索引
一个集合最多一个文本索引,可包含多个字符串字段:
javascript
db.articles.createIndex(
{ title: "text", content: "text" },
{ weights: { title: 10, content: 5 }, name: "text_idx" }
)weights 为字段设置权重,影响相关性得分;未指定则默认 1。
$text 查询
javascript
db.articles.find({ $text: { $search: "MongoDB 教程" } })$search:空格分隔多个词,默认是“或”关系;若要短语搜索,用双引号"MongoDB 教程"。- 可配合
$language指定语言(影响分词与停用词)。
按相关性排序
javascript
db.articles.find(
{ $text: { $search: "MongoDB" } },
{ score: { $meta: "textScore" } }
).sort({ score: { $meta: "textScore" } })限制
- 文本索引会忽略语言停用词,且分词依赖语言。
- 适合中等规模全文检索;大规模或复杂需求可考虑 Atlas Search 或 Elasticsearch 等。
下一节介绍 MongoDB 正则表达式。