問題タブ [ranking]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 人気順に曲のリストを並べ替える
今年の生徒会では、私は「歌」委員会に所属していて、曲を選びます。残念ながら、ダンスの子供たちはいつも愚かな歌の選択のいくつかを嫌うことになります。今年は違うものにできると思いました。先週の木曜日、私は簡単なPHPアプリケーションを作成して、子供たちが曲をデータベースに送信し、曲の名前、アーティスト、ジャンルを(ドロップダウンから)提供できるようにしました。また、Redditと同様の投票機能を実装しました。賛成ボタンをクリックすると、曲が賛成され、賛成数が増えます。反対票も同じです。
だれでも、データベースには、これらの曲、賛成票、反対票、およびタイムスタンプを評価するために使用できると思った3つの情報があります。しばらくの間、ランクは単に「投票」数の多い曲を一番上に置くことによって作成されました。つまり、賛成票が多いほど、反対票が少なくなります(賛成票-反対票)がリストの一番上に表示されます。それはしばらくの間はうまくいきましたが、日曜日までにリストには約75曲があり、最初に提出された曲は単にリストの一番上にありました。
日曜日に、ランクアルゴリズムを(賛成-反対)/(CurrentTimestamp-CreationTimestamp)に変更しました。つまり、短い時間で投票数が多いほど、リストに含まれる曲の数が多くなります。これはうまくいきますが、それでも私が望む方法ではありません。
今何が起こっているのかというと、曲が作成されて投票数1に投票された瞬間、それはどこかのリストの一番上に行き着くということです。ネガティブに投票数がある曲は、子供が通常一番下までスクロールしないため、あまり表示されません。
下の曲が上に表示されるようにデータを並べ替えることができたので、人々は下の曲を見る必要があります。正直なところ、これまで「人気」アルゴリズムに取り組む必要はなかったので、どう思いますか?
ウェブサイトhttp://www.songs.taphappysoftware.com-これをここに置くべきかどうかはわかりませんが、ダンスで不要な曲が発生する可能性があります:0
mysql - ランキング表を維持するためのベストプラクティス?
MySQL と PHP を使用して、2 つの列user
とscore
.
週に 1 回、ランキング スクリプトを再実行し、各ユーザーのスコアを計算します。
- 多くのユーザーが新しいスコアを持っています
- しない人もいます
- テーブルに追加する新しいユーザーがいる場合があります
MySQL でこれにアプローチする最良の方法は何ですか? update
新しい行を追加する必要がある場合は機能しますか? insert
テーブル全体をもう一度挿入できるように、既存の行をオーバーライドしますか? テーブルを削除して、最初から書き直すのが最善でしょうか?
何千人ものユーザーを除いて...
sql - SQLでのハッカーニュースランキングアルゴリズムの実装
PaulGrahamがHackerNewsのランキングアルゴリズムを説明する方法は次のとおりです。
News.YCはただ
(p-1)/(t + 2)^ 1.5
ここで、p =ポイント、t=時間単位の年齢
次の表を前提として、純粋なmySQLでこれを実行したいと思います。
- フィールドpostID(インデックス)およびpostTime(タイムスタンプ)を持つテーブル投稿。
- テーブルvoteid(インデックス)、postID、およびvote(整数、0または1)のフィールドを持つ投票。
投票フィールドの考え方は、投票を取り消すことができるということです。ランキングの目的では、vote=0は投票がまったくないことと同じです。(すべての投票は賛成票であり、反対票などはありません。)
問題は、PaulGrahamの式でソートされた上位N個のpostIDを返すクエリを作成する方法です。全部で約10万件の投稿があるので、スコアのキャッシュなどが必要になると思われる場合は、そのアドバイスをお聞かせください。
(明らかにこれはロケット科学ではなく、確かに理解できますが、朝食、昼食、夕食にSQLを食べる人は、それをガタガタ鳴らすことができると思いました。StackOverflowで利用できることは価値があるようです。)
関連する質問:
sql - MYSQLは、別のテーブルからのいくつかの異なる値に基づいて、あるテーブルから5つのレコードを選択します
私は決してMYSQLに堪能ではありません。私がやろうとしているのは、一意の ID 番号を持つギャラリーのリストを含むテーブルがあることです。最初のテーブルにある各 GalleryID に関連する 1000 もの画像を含む別のテーブル ImageData があります。各 GalleryID から 5 つのランダムなレコードを取得する select を実行したいと考えています。ループやデータベースへの複数のヒットを行わずにこれを実行しようとしています。
テーブルは次のとおりです。 Galleries -> GalleryID -> GalleryName
ImageData -> ImageID -> ImageName -> GalleryID
これが理にかなっていることを願っています。
php - Mysql。場所を注文し、リストにランダムに参加する
場所とリストの2つのテーブルがあります。
場所
id
title
address
latitude
longitude
リスト
id
location
info
status
これにより、ユーザーが提供した緯度と経度を使用して、場所が場所順に一覧表示されます。完璧に動作しますが、私が本当にやりたいのは..
- 場所ごとに1つの「リスト」をリストし、場所を順番に残します。
- 場所に複数の「リスト」がある場合、それは完全にランダムになります。
これをすべて1つのSQLクエリで実行する方がよいでしょうか。または、少なくとも1つの「リスト」があるすべての場所にデータを入力してから、別のクエリを使用して、その場所のランダムな「リスト」を選択しますか?
アップデート
提供される作成テーブル:
sql - 同じIDを持つ結果間でmysqlランキングを取得する方法
簡単な質問ですが、それぞれにタイムスタンプ、reply_id、topic_id を含むメッセージのテーブルがあります。Reply_ids は他のメッセージと同じにすることができます。つまり、これらのメッセージは同じグループの返信に含まれます。最小のタイムスタンプを持つ reply_id を選択すると、それがそのグループの最初のメッセージであることを意味します。3番目(3)4番目(4)など。これを行う方法を知っている人はいますか、何か提案がありますか?これは純粋なSQLで実行できますか?
sql - アイテムのクリック数に基づく MySQL クエリのヘルプ
次のようなテーブル設定があります(たとえば簡略化されています):
各 item_id には多くの user_id があります。基本的に、user_id に関連付けられたアイテムのクリックを保存しています。
これをクエリして、click_dt に基づいて、各 item_id の最新の user_id のみを一覧表示したいと考えています。
したがって、item_id 55 に対して 5 回のクリックがあった場合、最後のクリックまたは click_dt DESC が表示されるレコードになります....
わかる?どんな助けでも素晴らしいでしょう...ありがとう!
python - 30 レベルの Python ランキング アルゴリズム
シンプルな Python ベースのアルゴリズム ランキング システムを見つけようとしています。
シナリオは次のとおりです。
レベルは 30 あり、レベル 1 は 0 ポイントから始まります。レベル 30 に到達するには 2000 ポイントが必要です。
レベルが進むにつれて、より多くのポイントが必要になります。
たとえば、レベル 1 から 2 に上がるには 3 ポイントかかる場合があります。レベル 2 から 3 は、追加で 5 ポイントかかる場合があります。レベル 29 ~ 30 では、さらに 1200 ポイントかかる場合があります。
スコアはその場で計算されるため、プレイヤーがどのレベルにいるかを判断する方法も必要です。例えば358点の人って何レベル?
ポイントを手動で設定することもできますが、2000 ポイントの上限は日々変動するため、理想的なオプションではありません。
Google の Pagerank (1-10) に似たものを考えていました。0 から 4 に到達するのは簡単ですが、9-10 は非常に難しい成果です。
簡単なスニペットやティペットはありますか?
ありがとう
sql - カテゴリごとに N 個のレコードを選択し、X で並べ替えます
ブログ投稿を含むデータベース テーブルがあります。たとえば、日付順など、各カテゴリの 1 つ (または複数) の投稿をホームページに表示したいと考えています。
したがって、投稿テーブルは次のようになります。id | title | description | cat | filename | date
このようなクエリを作成するにはどうすればよいですか? group-by または subselect を使用することを考えましたが、パフォーマンスが向上するかどうかはわかりません...テーブルに多数のレコードがあります。
php - PHPの連番
ここのページで問題が発生しています:
2ページ目以降をクリックすると、テーブルの「ランク」部分がゼロにリセットされ続けます。21から開始するのではなく、ゼロにリセットするだけです。
どうすれば修正できますか?