100 から 1000 個の文字列のセット (またはソートされたセットまたはリストの方がよい場合) があるとします。
次に、100 万など、さらに多くの文字列の並べ替えられたセットBがあります。
ここで、 CはAとB (もちろん文字列)の交点になるはずです。
X がCにあるすべてのタプル (X, SCORE_OF_X_IN_B) が必要です。
何か案が?
私は2つのアイデアを得ました:
- インターストア
- すべてのスコアが 0 であるソートされたセットをストア A
- インターストアからDへ
- D のすべての項目を取得する
- Dを削除
- クライアントの単純なループ
- クライアント プログラムで A をループする
- すべての文字列の zscore を取得する
1. redis 側のオーバーヘッドが多すぎます (たとえば、書く必要があります。redis ページには、時間の複雑さが非常に高く、あまりにもhttp://redis.io/commands/zinterstoreと記載されています)、2. は |A| を持ちます。データベース接続があり、良い選択ではありません。
zscore のように機能するが、任意の数の文字列を使用する redis/lua スクリプトを作成できるかもしれませんが、ホスティング会社がスクリプトを許可しているかどうかはわかりません...
だから、スクリプトなしで利用できるエレガントで高速なソリューションがあるかどうか、SOに尋ねたかっただけです!