在MongoDB中的全文搜索主要通过以下两种方式实现:
- 使用$text操作符进行全文搜索。
- 创建文本索引:
db.products.createIndex({desc: "text"})
- 文本搜索:
db.products.find({$text: {$search: "coffee"}})
- 搜索多个关键词:
db.products.find({$text: {$search: "coffee sweet"}})
- 使用搜索词权重:
db.products.find({$text: {$search: "coffee^2 sweet"}})
- 使用$language指定搜索语言:
db.products.find({
$text: {
$search: "café con leche",
$language: "spanish"
}
})
- 使用Text Search Aggregation Pipeline进行全文搜索。
- 创建文本索引:
db.products.createIndex({desc: "text"})
- 聚合管道文本搜索:
db.products.aggregate([
{
$text: {
$search: "coffee"
}
}
])
- 支持$match $limit $sort等操作符:
db.products.aggregate([
{
$text: {
$search: "coffee"
}
},
{
$match: {category: "beverage"}
},
{
$sort: {score: {$meta: "textScore"}}
},
{
$limit: 10
}
])
熟练掌握$text操作符与Text Search Aggregation Pipeline的搜索用法,并在业务中恰当运用全文搜索,编写高效的搜索语句或管道,持续优化与总结经验,这些都是我们实践这个功能的重点所在。