0

私は 3 つのテーブル - ユーザー - 投稿 - アクティビティ (ユーザーの投稿の好き嫌いの情報を含む) を持っています。

私のビジネス要件は、人々が好き嫌いに基づいて相互にフォローするよう提案することです。

ユーザーの好き嫌いに基づいて相互スコアが計算されるプロセスを作成しました。

例: ユーザー AA は id 100 の投稿が好きで、この投稿も好きな他のユーザー (たとえば 50 ユーザー) よりも、50 人のユーザーすべてに対してユーザー AA のスコアを計算します。数百以上になる可能性があります) スコアのように、ユーザー AA が最も高い相互スコアを持つユーザーをユーザー AA に提案します。

私の問題は、各ユーザーの計算を他のユーザーに対して (毎回最初からプロセスを開始する必要がないように) フラットなテーブルに格納すると、テーブルが巨大になることです。ユーザーの相互スコアのこのデータを保存するための最良のデータベーステーブル構造を提案してください

ありがとう

4

1 に答える 1

1

テーブルスペースの問題ではないと思います。ユーザーのすべてのペア間のスコアを計算すると、O(n^2) スコアが得られます。おそらくヒューリスティックを使用して、すべてのユーザーで良いスコアを獲得していると思われる ppl を多かれ少なかれ取得し、それらのペア間のスコアのみを計算する必要があります (各ユーザーごとに最高の 10 ユーザーのみを計算するように制限できます)。そうすれば、使用するスペースが大幅に減り、作業が速くなります。すべてのソーシャル ネットワークとそのような種類のアプリケーションは、すべての計算を行うときにヒューリスティックを使用して不正行為を行います...あなたも同じことをすべきです...

于 2012-07-11T21:59:13.143 に答える