関連性スコアに基づいてユーザーにデータを表示するアプリケーションがあります。表示できる情報は 5 ~ 7 種類あります (ユーザー タグ、フレンド タグ、推奨タグ、人気タグなど)。各情報タイプは個別の SQL クエリになります。
次に、各タイプの関連性をランク付けするアルゴリズムを作成します。このアルゴリズムは、特定のタイプに対してアクションが実行されてからの経過時間、あるタイプの情報が別のタイプにとってどれほど重要であるか、あるタイプが表示された頻度など、いくつかの要因に基づいています。
それらがランク付けされたら、Facebook と同様にフィードでユーザーに表示します。
私の質問は単純なものです。ランキング アルゴリズムを実行する前にデータが必要なので、データベースから必要なデータのみを取得する最も効率的な方法を教えてください。
現在、各情報タイプの上位 5 つのインスタンスを取得し、それらをランク付けしています。各データには関連性スコアが付けられ、特定の関連性しきい値に達する十分な結果がない場合は、データベースに戻ってそれぞれの次の 5 つを取得します。
このアプローチの問題点は、一度も使用したことのない 1 つのストーリー タイプをあまりにも多くプルするリスクがあることです。最初に必要なものが得られない場合は、データベースに戻り続ける必要があります。
すべての情報タイプとアルゴリズムを組み込んだ大規模なSQLクエリについて考えましたが、これは機能する可能性がありますが、それは実際には巨大なクエリになり、mysqlに非常に多くの処理をさせており、私は一般的な考え方ですMysql がデータの取得を行い、私のプログラミング言語 (php) が処理を行う必要があります。
もっと良い方法があるはずです!どこかに学術論文があるはずなのですが、見つけられませんでした。
ありがとうスタックオーバーフロー