1

Reddit (オープン ソース) アルゴリズムを利用する Web アプリケーションの構築を検討しています。

時間をかけて微調整する予定ですが、今のところランキングシステムを使用するのに良いスタートになると思います.

このアルゴリズムに関するブログ記事を読みましたが、その例は Python で書かれています。これを ColdFusion で使用するために変換するにはどうすればよいですか? より簡単な場合、CFC で使用するための追加のボーナス ポイントはありますか?

コード:

#Rewritten code from /r2/r2/lib/db/_sorts.pyx

from datetime import datetime, timedelta
from math import log

epoch = datetime(1970, 1, 1)

def epoch_seconds(date):
    """Returns the number of seconds from the epoch to date."""
    td = date - epoch
    return td.days * 86400 + td.seconds + (float(td.microseconds) / 1000000)

def score(ups, downs):
    return ups - downs

def hot(ups, downs, date):
    """The hot formula. Should match the equivalent function in postgres."""
    s = score(ups, downs)
    order = log(max(abs(s), 1), 10)
    sign = 1 if s > 0 else -1 if s < 0 else 0
    seconds = epoch_seconds(date) - 1134028003
    return round(order + sign * seconds / 45000, 7) 

このコードについて説明しているブログ投稿: http://amix.dk/blog/post/19588

いくつかのアイデアや例を聞くことを楽しみにしています。

どうもありがとう!マイケル。

また、追加の質問として; このコードは、データセットが既に収集された、SQL クエリまたは ColdFusion でのある種のソートを介してより適切に実行されますか? 私の選択したDBはMySQLです。

更新: 私が求めていたものに関連する別の質問がここで見つかりました...役立つと思います。 Reddit と Hacker News のランキング アルゴリズムはどのように使用されますか?

4

1 に答える 1

6

そのコードのほとんどは、任意のプログラミング言語の標準コードにすぎません

たとえば、ColdFusion で特定の日付から秒を取得するのは非常に簡単です。

<cfset seconds = dateDiff('s', now(), createDate(1970, 1, 1)) />

どのビットにこだわっているかはわかりませんが、すべて非常にシンプルです。そこにあるすべての関数には ColdFusion バージョンがあり、誰かに書き直してもらいたいだけでなく、試してみて、何か行き詰まっていないかどうか尋ねることをお勧めします。

于 2012-02-03T13:24:39.013 に答える