質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

4508閲覧

MongoDBで正規表現での検索のパフォーマンスについて

kooya

総合スコア19

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2014/12/26 11:35

検索機能を作成していて、以下の様に書いたのですが、パフォーマンスをあげるためにはどう改善したらよいでしょうか?よろしくお願いします。

ドキュメントは1万件くらいで、8000msくらいかかっています。

lang

1queries = [ 2 { $or : [ 3 { description: { '$regex': '.*swift.*' } }, 4 { title: { '$regex': '.*swift.*' } } 5 ]}, 6 { $or : [ 7 { description: { '$regex': '.*ios.*' } }, 8 { title: { '$regex': '.*ios.*' } } 9 ]}, 10 { $or : [ 11 { description: { '$regex': '.*apple.*' } }, 12 { title: { '$regex': '.*apple.*' } } 13 ]} 14]; 15 16Event.find({ $and : queries }) 17 .select('title description url _id tag') 18 .skip(page * count) 19 .limit(count) 20 .sort({started_at: 1}) 21 .exec(function (err, events) { 22 23 if (err) { 24 console.log(err); 25 } 26 27 res.json(events); 28 29 });

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

  • 検索値が固定ならクエリの結果(limitなしの全件)をredisなどにキャッシュして2回目以降はキャッシュ値を使う
  • 普通にsolrみたいな全文検索のエンジンを使う

投稿2015/06/09 16:14

bells17

総合スコア64

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Stackoverflow に同様の質問とその回答があるようです: regex - Slow regexp query in MongoDB - Stack Overflow

case insensitive regex search will be slow as it cannot take advantage of the index effectively. If you only use the field for searching, you should consider storing text in all lowercase form and search with case-sensitive regex.

参考になれば幸いです

投稿2015/01/14 10:51

gouf

総合スコア2321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問