我想實現一個網站,我一直在努力,並已決定去與黑客新聞的算法上的排名系統。我選擇這種算法的推理很簡單,因爲它已被描述爲here。如何在我的網站中實現排序算法來對數據庫數據進行排序?
我一直在尋找這個Python代碼和無法弄清楚我將如何實現它(我使用建我的網站的語言)。
def calculate_score(votes, item_hour_age, gravity=1.8):
return (votes - 1)/pow((item_hour_age+2), gravity)
鑑於表:
posts:
id | title | time_submitted
votes:
id | postid | userid | score
如何將我拉從數據庫中的數據?理想的解決方案(最有效的)將是構建一個MySQL查詢來檢索使用該算法排名前10位的帖子。但是鑑於黑客新聞已經在Arc中實現了它,這讓我認爲他們將所有帖子都拉出來,然後通過算法對它們進行排序以對它們進行排名。
reddit的也想到這個......他們使用非關係數據庫模式,所以我會認爲他們也像黑客新聞,在他們的代碼進行排名 - 而不是數據庫。
你將如何實現這一點?
編輯:一篇文章可以有很多票,因爲我想記錄哪個用戶在哪個帖子上投票。
是帖子投票一對多關係嗎? – 2010-11-04 01:21:24
是的。我剛剛編輯我的帖子來解釋原因。 – dave 2010-11-04 01:26:17
嗯..在Python中,這將是非常糟糕的,只要性能和編碼實踐去,因爲你將不得不檢索所有帖子和投票並進行比較。 SQL可以做得更快,並只返回你需要的數據... – Joshkunz 2010-11-04 01:33:19