2016-09-21 8 views
1

こんにちは私は全文検索で大きな問題があります。私はインデックス付きフィールドによくある言葉をたくさん持っている1000万のドキュメントを持つコレクションを持っています:what、as、like、how、こんにちは、こんにちは、一般的な言葉のためのMongoDBフルテキスト検索

私は単語 "こんにちは"で検索を行うと、検索が非常に遅くなり、結果を検索するのに約30分かかります。言葉は、検索が速く、30ミリ秒未満かかります。 何が問題なのか分かりません。

マイテキストインデックス:

db.themes.createIndex({"theme":"text"}) 

と私は実行するクエリ:それはある方法です

db.themes.find({$text: {$search: "hi"}}, {score: {$meta: "textScore"}}).sort({score:{$meta:"textScore"}}).limit(20) 
+0

検索するドキュメントの数を制限する必要はありますか?こちらをご覧ください:https://docs.mongodb.com/manual/tutorial/limit-number-of-items-scanned-for-text-search/ – dyouberg

答えて

0

も。 mongodbはフルテキスト機能を提供しますが、パフォーマンスは一般的なテキスト検索エンジンと同等ではありません。

インターネットでは、ほとんどの実装で検索の最適化のためにmongodbと一緒に実装された弾性検索機能があると思います。あなたの操作に弾性検索またはSolrを使用することができます。

0

大規模なコレクションでは、MongoDBのテキスト検索が非常に遅いです。私はまた、 "James Bond"がORであるという自動的な考え方が好きではありませんが、それはもう一つの物語です...(And、 "\" James \ "\ Bond \" "ベスト)。

あなたのアプリケーションで許可されている場合は、他のフィールドでフィルタリングすることでLimit the Number of Entries Scannedにすることもできます。そのためにはにはが必要ですが、それは$ gtなどとすることはできません。あなたはそれを解決するために創造的でなければならないかもしれません...私は都市を "大都市圏"にグループ分けしました(これはしばらく時間がかかりました)...そして今、私は{metro: "DC"、{$ text: {$ search: "ピザ"}}。

関連する問題