0

関連性スコアに基づいてユーザーにデータを表示するアプリケーションがあります。表示できる情報は 5 ~ 7 種類あります (ユーザー タグ、フレンド タグ、推奨タグ、人気タグなど)。各情報タイプは個別の SQL クエリになります。

次に、各タイプの関連性をランク付けするアルゴリズムを作成します。このアルゴリズムは、特定のタイプに対してアクションが実行されてからの経過時間、あるタイプの情報が別のタイプにとってどれほど重要であるか、あるタイプが表示された頻度など、いくつかの要因に基づいています。

それらがランク付けされたら、Facebook と同様にフィードでユーザーに表示します。

私の質問は単純なものです。ランキング アルゴリズムを実行する前にデータが必要なので、データベースから必要なデータのみを取得する最も効率的な方法を教えてください。

現在、各情報タイプの上位 5 つのインスタンスを取得し、それらをランク付けしています。各データには関連性スコアが付けられ、特定の関連性しきい値に達する十分な結果がない場合は、データベースに戻ってそれぞれの次の 5 つを取得します。

このアプローチの問題点は、一度も使用したことのない 1 つのストーリー タイプをあまりにも多くプルするリスクがあることです。最初に必要なものが得られない場合は、データベースに戻り続ける必要があります。

すべての情報タイプとアルゴリズムを組み込んだ大規模なSQLクエリについて考えましたが、これは機能する可能性がありますが、それは実際には巨大なクエリになり、mysqlに非常に多くの処理をさせており、私は一般的な考え方ですMysql がデータの取得を行い、私のプログラミング言語 (php) が処理を行う必要があります。

もっと良い方法があるはずです!どこかに学術論文があるはずなのですが、見つけられませんでした。

ありがとうスタックオーバーフロー

4

1 に答える 1

0

情報の種類(ユーザータグ、友達タグなど)を意味すると仮定しています。特定の固定しきい値に対してデータを再度取得するのではなく、アルゴリズムを少し変更することをお勧めします。優先度の低いタイプのレコードをいくつか取得した場合でも、各情報タイプに重みを割り当ててみてください。再度取得する必要はありません。

于 2013-10-10T07:07:12.937 に答える