多くの分野で検索&ソートできるモンゴコレクションがあります。たとえば(機密保持のため、実際のコレクションを置くことができません)、次のようにしましょう。
MathProblem
{
Creator : String,
Difficulty : integer (from 0 to 4),
Categorie : integer (from 0 to 40),
NbOfQuestion : integer (less than 20),
Likes : integer,
Dislikes : integer,
Succeeded : integer,
Failures : integer
}
Creator、Difficulty、Categorie、NbOfQuestionで検索できます。そして、好き、嫌い、成功、失敗で並べ替えます。
元:
- 難易度3の問題を教えてください。カテゴリ20で、いいねの数で並べ替えます。
- 5つの質問の問題を教えてください。失敗順に並べ替えます。
- 難易度1、カテゴリ10、2の質問で、アインシュタインによって作成された問題を教えてください。
- すべての問題を成功順に並べ替えてください。
など...すべての順列が可能であり、オプションで1つのフィールドで並べ替えることができます。
ここでの問題は、何百万もの記録があることです。インデックス作成には少なくとも30ギガの費用がかかりました。また、インデックスが非常に多いため、このコレクションの書き込み速度が低下します。そして、それが書き込みを押しつぶしている間、それは読み取りをロックしています。したがって、読み取りは多く、書き込みはおそらく少し少なくなりますが、それでも多くなります。
「検索エンジンソリューション」を検索しましたが、「全文検索」でしか見つけられませんでした。
また、難易度CategorieとNbOfQuestionを1つの配列にマージして(値に10の係数を掛けて、それらをアパートに保つことにより)、この配列のみにインデックスを付け、スペースを節約しようとしました。
後知恵は大歓迎です!
ありがとう、
チャールズ