ソーシャルネットワークをコーディングしていますが、最も使用されているトレンドを一覧表示する方法が必要です。すべてのステータスはコンテンツフィールドに保存されるため、ハッシュタグの言及に一致する必要があります。#trend1#trend2 #anothertrend
そしてそれらでソートします、MySQLでこれを行う方法はありますか?それとも、PHPだけでこれを行う必要がありますか?
前もって感謝します
トレンドの背後にある数学はやや複雑です。機械学習は少しやり過ぎかもしれませんが、おそらくいくつかの例を実行する必要があります。
@deadtrunkのサンプルコードを使用すると、過去30分間に発生したトレンドを見逃してしまいます。@eggyalの例を見ると、1日中強くなっているが、過去30分で落ち着いたトレンドを見逃しています。
この問題の古典的な解決策は、微分関数(http://en.wikipedia.org/wiki/Derivative)を使用することです。サンプルデータベースを構築してこれを実験し、ソリューションを時間の経過とともに変更するのに十分な柔軟性を持たせることは価値があります。
シンプルなものを作りたいと思っている間、ユーザーはトレンドに慣れており、期待どおりに機能しない場合は壊れていると見なします。
PHPコードを使用してハッシュタグを抽出し、投稿の内容とは別にデータベースに保存する必要があります。このようにして、並べ替えるたびにコンテンツを解析するのではなく、直接クエリを実行できるようになります。
ハッシュタグをステータスに関連付けるテーブルを作成します。
ハッシュタグ関連付けテーブルに結合され、ハッシュタグでグループ化された最近の期間(たとえば、過去30分)からのすべてのステータス更新を選択します。
各グループの数は「傾向」を示しています。
タグを専用のテーブルに保存してからクエリを実行する方が良いと思います。したがって、次のテーブルレイアウトがある場合
trend | date
次のクエリを使用してトレンドを取得できます。
SELECT COUNT(*), trend FROM `trends` WHERE `date` = '2012-05-10' GROUP BY trend
18 test2
7 test3