MongoDB中的全文搜索似乎是一个很好的功能,特别是在需要高性能搜索和索引时。 但是,我想知道为什么不允许对多个集合进行全文搜索。
例如:我有供应商和产品系列(每个供应商都有n个产品)我真的想搜索所有产品,但供应商的名称也应匹配。 现在我用$ lookup执行此操作,然后使用正则表达式匹配。这很有效,但速度很慢(500-800ms)。
如果我使用带索引的全文搜索,则会显着提高性能。但$ text-operator必须是聚合管道中的第一个阶段,不允许我先使用$ lookup。
(参见限制部分:https://docs.mongodb.com/manual/reference/operator/query/text/#op._S_text)
我如何才能提高多个馆藏文本搜索的速度?
答案 0 :(得分:1)
对于仍在寻找解决方案的人
db.getCollection('projects').aggregate([{
"$match": {
"$text": {"$search": query }
}}, {
"$lookup": {
"from": "users",
"localField": "uuid",
"foreignField": "uuid",
"as": "user"
}}, {
"$sort": {
"score": { "$meta": "textScore" }
}
}]);
其中query是文本搜索字符串。
此查询适用于带有密钥projects
的{{1}}集合,其中uuid
集合带有users
密钥,所有密钥均按相关性排序。