0

Play Framework 2 とストレージ用の MongoDB を使用して、Java/Scala でテキストを共有するためのサイトを開発しています。現在、検索ページを開発中です。もちろん、従来のテキストフィールド検索だけでなく、2 種類のフィルターもあります。

  • 鬼ごっこ
  • 年間/月/週の最高評価/最多閲覧数

例えば、「ファンタジー」というタグがついたものの中から、今週の○○件のベストテキストを取得することができます。私の言いたいことがわからない場合は、Pornhub を考えてみてください。;)

クエリの実行方法はわかりましたが、パフォーマンスの問題が心配です。私はパフォーマンスとクエリの最適化について本当に初心者であり、MongoDB の初心者であるため、何万ものテキストを検索、並べ替え、ランク付けする大きなクエリの影響を恐れています。当然、キャッシュシステムを考えましたが、クエリごとに異なる可能性があるため、実装方法がわかりません。また、毎日深夜 (たとえば) に更新される一時的なコレクションとジョブも考えましたが、やはり組み合わせが多すぎます。

では、それをモデル化するために使用できるテクニックと「トリック」は何ですか? 何か考えはありますか?そのために設計された検索フレームワークはありますか? それとも、MongoDB がその種の並べ替えとランキングを非常にうまく処理することを心配しすぎているのでしょうか。

はっきりしたいと思います。ご助力ありがとうございます!

4

1 に答える 1

0

いくつかのメモ:

  1. MongoDB は、全文検索機能をまもなく提供します。(v2.4)
  2. Mongo への書き込みと同時に、いつでもデータを Elastic Search または Solr に送信できます。次に、Elastic または Solr で検索できます。
  3. Mongo でテキスト ドキュメントにタグを付け、インデックスを作成して検索することは間違いありません。例えば:
{ "_id" : 123, "content" : "...", "tags" : [ "fun", "cool read" ] } 

「tags」フィールドにインデックスを付けてから、「tag : 'fun'」を検索すると、Mongo はそのドキュメントを非常に高速に取得します。

どのように最高の評価を得ているかを説明していませんでしたが、その情報をテキストに書き込んでクエリを実行することは間違いありません。

于 2013-03-08T23:35:07.273 に答える