2016-12-12 27 views
2

MongoDBの全文検索は、特に高性能な検索と索引が必要な場合に便利です。 しかし、なぜフルテキスト検索が複数のコレクションにわたって許可されていないのだろうと思います。MongoDBフルテキスト検索と検索演算子

例:私はサプライヤと製品のコレクションを持っています(すべてのサプライヤにはn個の製品があります)。私は実際にすべての製品について検索したいと思いますが、サプライヤの名前も一致させる必要があります。 今私は$ルックアップとそれから正規表現とのマッチでこれをやっています。これはうまくいくが、その速度は非常に遅い(500〜800ms)。

フルテキスト検索でインデックスを使用すると、パフォーマンスが大幅に向上します。しかし$ text-operatorは集計パイプラインの最初の段階でなければならず、最初に$ルックアップを使用することはできません。私は複数のコレクションを超えるテキスト検索の速度を上げることができるか

任意のアイデア:

https://docs.mongodb.com/manual/reference/operator/query/text/#op._S_text制限セクションを参照してください)?まだクエリは、テキスト検索文字列であるソリューション

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

を探している人のため

答えて

0

このクエリはuuidキー、関連度順に並べ替えすべてでusersコレクションを指しキーuuidprojectsコレクション、ためです。

関連する問題