私はユーザーのコレクションを持っていて、それらのユーザーのユーザー名にオートコンプリートを実装したいとします。私はmongodbのドキュメントを見て、$ regexはこれを行う方法の1つと思われます。より良い方法がありますか?より良いことは、より良い演技/より良い練習を意味します。MongoDBでオートコンプリートを実装する
9
A
答えて
9
@Thiloの提案によれば、プレフィックスを含むいくつかのアイデアを使用できます。
最も重要なことは、(オートコンプリートを感覚で瞬時にしたいので)非常に迅速なリクエストがあることです。したがって、適切なインデックスを使用するクエリを使用する必要があります。
regexpで:/^prefix/
を使用してください(重要なのは、クエリ使用インデックスを作成するために必須の行頭を指定する^です)。以下のようなエントリを持つあなたはモンゴに接頭辞木を保存することができます(別名しようとします):
範囲クエリがあまりにも良いです:{ $gt : 'jhc', $lt: 'jhd' } }
より複雑なより高速
{usrPrefix : "anna", compl : ["annaconda", "annabelle", "annather"]}
{usrPrefix : "ann", compl : ["anne", "annaconda", "annabelle", "annather"]}
この最後のソリューションは非常に高速であります(もちろん複雑なインデックスの場合)、スペース効率はまったくありません。あなたはあまりにも選択したトレードオフを知っています。
2
5
私たちは、正規表現を使用してそれを行うと、それは限り、あなたは、インデックスを持っていて、/ ^値/
は、あなたがしたいことがありますので、インデックスと大文字小文字を区別しないオプションを使用することはできませんので注意してください使用して高速です文字列の小文字バージョンをドキュメントの別のフィールドとして保存し、オートコンプリートに使用します。
私は300万件以上のドキュメントを使ってテストを行いましたが、それはまだ瞬時に表示されています。
関連する問題
- 1. Compass Search Engineでオートコンプリートを実装する
- 2. カスケードドロップダウンリストでオートコンプリートを実装する方法
- 3. HTML入力でオートコンプリートを実装する
- 4. MongoDBカスタムシリアライザの実装
- 5. MongoDbのMapReduceで "オートコンプリート"タグ
- 6. MVCアプリケーションでオートコンプリートを実装する方法は?
- 7. infopath2007のリッチテキストボックスでオートコンプリートを実装する方法は?
- 8. Clojureでオートコンプリートのサンプルを実装する方法は?
- 9. ページ内の多くの入力でjQueryオートコンプリートを実装する
- 10. jQuery UIオートコンプリートと同様にDojoオートコンプリートを実装する方法は?
- 11. MongoDBのC#ドライバ(Samus)で "$ or"を実装する
- 12. MongoDBでキーワードと位置検索を実装する方法は?
- 13. 埋め込みページングをmongodbで実装する
- 14. 入力時に角度材料オートコンプリート検索を実装する
- 15. データベースをソースとして使用するオートコンプリートの実装。
- 16. プログラミング言語のオートコンプリートを実装する方法
- 17. 私のウェブサイトにオートコンプリートを実装しています
- 18. 良いオートコンプリートを実装していますか?
- 19. アジャイルツールキット4と異なるデータベース(MongoDBの)を実装
- 20. オートコンプリートのストリート、都市、国のPHP実装の例
- 21. Google App EngineでPythonでjQueryオートコンプリートを実装するにはどうすればよいですか?
- 22. ウェブホスティングでmongoDBを実行中
- 23. DelphiでXIRRの実装を実装するには?
- 24. MongoDb C#ドライバ、IList実装のプロパティが保存されない
- 25. MongoDBのHashed Shard Keyの適切な実装
- 26. MongoDB ObjectId外部キー実装の推奨事項
- 27. 複数行にオートコンプリートを実装するにはどうすればいいですか<textarea>?
- 28. Telerik Textbox [RadInput] Jqueryを使用してオートコンプリート実装をサポートしていません
- 29. C#とSQL Serverでオートコンプリートを実装する方法とその価値はありますか?
- 30. ajaxオートコンプリート用のWebサービスを実装する最良の方法は何ですか
優れた答えです。試しに完了していたわけではありませんでした。個人的には、モンゴでRegexesを使用することで、私は決して「瞬時に」感じることはありませんでした。これははるかに速くするトリックを行う必要があります! – Vivek
実際、mongoのregexpは実際にはうまく実装されていません。しかし、ライブでデータベースを照会するとは思わない流体が必要な場合は、レイテンシが高すぎます。オートコンプリートを実装する適切な方法は、いくつかの通常の完了を非同期的にロードし、時間(およびユーザ入力)が進むにつれて完了させることです。 – kamaradclimber