2011-02-12 30 views
1

我構建了一個網站,讓您免費添加Rails相關的寶石,並標記這些寶石。我想添加的下一個功能是寶石排名。我已經考慮過一些常見的系統,比如明星和投票,但是已經決定了一個簡單的系統不能很好地工作。一個排序寶石的好算法

這裏有一對夫婦的情況是我想要的排名算法,爲很好地工作:

  • 有一個名爲GEM1一種流行的寶石,做XYZ。 GEM1已經發布了一年,在XYZ的寶石中排名最高。一款新的GEM2,也是XYZ,已經發布,顯然比GEM1更好。 GEM2應該能夠快速勝出GEM1。
  • 有一個名爲GEM1的高級寶石。 Rails的新版本發佈,GEM1不適用於此版本。隨着時間的推移(可能與大多數人開始使用新的Rails版本所需的數量相同),GEM1仍然不支持此版本,它將失去其高排名。

一些信息,我們提供給我們的寶石是:

  • 下載數量
  • 號當前版本的
  • 下載,如果創業板在GitHub上託管的,我們號碼的叉子和觀察者(儘管寶石不應該超過另一個寶石b/c它託管在github上)

這個信息可能是算法的一部分(a長久以來,我們需要從用戶那裏收集選票或明星或其他任何東西)。

所以我的問題是,你能想到一個好的算法(當然不是確切的,只是描述它),可以處理這些場景,或者至少能夠提供一些好的建議,或者指向正確的方向。

回答

3

在我看來,下載次數並不是一個非常有用的儀表。可能存在的代碼片段多年來一直沒有工作,但仍然每個月都有成千上萬人嘗試(即下載)。

  1. 詢問提交以確定哪些版本的Rails的代碼是在做。雖然它可能不會解決你所有的問題,因爲他們無法預測以後的版本的Rails會打破它,它需要兩秒鐘指定該信息,並且可以節省大量時間。在下載頁面上顯示。
  2. 詢問下載率代碼...執行速度,執行可靠性,代碼的可讀性,便於安裝,文檔等
+0

感謝您的意見。我同意下載的數量是一個不好的數據。 – Austin 2011-02-12 04:31:54

2

http://ruby-toolbox.com/categories.html是一個優秀的網站,做類似的事情。他們只是根據下載排名,但下載量最多的是最好的IMO並不總是如此。應該顯示github上的活動,因爲我不太可能嘗試一些沒有積極開發的新東西。

我會認爲下載應該算是某種東西,也許會在對數尺度上衰減。開發活動也應該計算在內。此外,您還可以添加用戶評論並將其納入其中。我認爲這些指標可以通過調整一定的權重來查看最適合的排名。也許你也可以邀請作者寫出他們的寶石提供了什麼,而其他人不在同一個班級。

我認爲要處理突然不處理新框架的gem,需要有一個downvote按鈕,用戶可以通過downvote按鈕並從您提供的罐頭清單中給出原因。如果一顆寶石突然開始被拒絕投票,沒有最近的活動並且下載量下降,那麼它會下降。然後你可以用向下的箭頭指出它正在趨向下降。最受歡迎的原因可以列出。