【问题标题】:MongoDB full text search and lookup operator [duplicate]MongoDB全文搜索和查找运算符[重复]
【发布时间】:2017-04-27 02:34:30
【问题描述】:

MongoDB 中的全文搜索似乎是一个不错的功能,尤其是在需要高性能搜索和索引时。 但是,我想知道为什么不允许对多个集合进行全文搜索。

例如:我有一个供应商和一个产品集合(每个供应商有 n 个产品)我很想对所有产品进行搜索,但供应商的名称也应该匹配。 现在我正在使用 $lookup 执行此操作,然后使用正则表达式进行匹配。这可行,但速度很慢(500 - 800 毫秒)。

如果我使用带索引的全文搜索,这将显着提高性能。但是 $text-operator 必须是聚合管道中的第一阶段,不允许我先使用 $lookup。

(见限制部分:https://docs.mongodb.com/manual/reference/operator/query/text/#op._S_text

有什么想法可以提高对多个集合的文本搜索速度吗?

【问题讨论】:

    标签: mongodb nosql


    【解决方案1】:

    对于仍在寻找解决方案的人

    db.getCollection('projects').aggregate([{
        "$match": {
            "$text": {"$search": query }
        }}, {
        "$lookup": {
            "from":         "users",
            "localField":   "uuid",
            "foreignField": "uuid",
            "as":           "user"
        }}, {
            "$sort": {
                "score": { "$meta": "textScore" }
            }
        }]);
    

    其中 query 是一个文本搜索字符串。

    此查询是针对projects 集合,键为uuid,指的是users 集合,键为uuid,均按相关性排序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-23
      • 2014-08-12
      • 1970-01-01
      • 2012-03-22
      相关资源
      最近更新 更多