]> Untitled Git - lemmy.git/commitdiff
Adding negative score fix
authorDessalines <tyhou13@gmx.com>
Sat, 20 Apr 2019 23:47:23 +0000 (16:47 -0700)
committerDessalines <tyhou13@gmx.com>
Sat, 20 Apr 2019 23:47:23 +0000 (16:47 -0700)
- Fixes #84.
- Fixing unit tests.

docs/ranking.md
server/migrations/2019-03-30-212058_create_post_view/up.sql
server/src/actions/comment_view.rs
server/src/actions/moderator.rs
server/src/actions/post_view.rs
ui/src/utils.ts

index f55a128424e7407ee0d6dec98a67d99ca87c2237..34348c30f62ea4724885f6b4cdb9a751d0c454b5 100644 (file)
@@ -12,14 +12,14 @@ The [Hacker New's ranking algorithm](https://medium.com/hacking-and-gonzo/how-ha
 
 ## My Algorithm
 ```
-Rank = ScaleFactor * sign(Score) * log(1 + abs(Score)) / (Time + 2)^Gravity
+Rank = ScaleFactor * sign(3 + Score) * log(abs(3 + Score)) / (Time + 2)^Gravity
 
 Score = Upvotes - Downvotes
 Time = time since submission (in hours)
 Gravity = Decay gravity, 1.8 is default
 ```
 
-- Add 1 to the score, so that the standard new comment score of +1 will be affected by time decay. Otherwise all new comments would stay at zero, near the bottom.
+- Add 3 to the score, so that even minimally downvoted comments will be affected by time decay. Otherwise all new comments would stay at zero, near the bottom.
 - The sign and abs of the score are necessary for dealing with the log of negative scores.
 - A scale factor of 10k gets the rank in integer form.
 
index 2f71b6fb984ad5885dbfcc0f3fb17d4fb8fd9e2f..3a509e29d0a82d397b69376f68ff732182346ceb 100644 (file)
@@ -5,7 +5,7 @@ create or replace function hot_rank(
 returns integer as $$
 begin
   -- hours_diff:=EXTRACT(EPOCH FROM (timezone('utc',now()) - published))/3600
-  return floor(10000*sign(score)*log(1 + abs(score)) / power(((EXTRACT(EPOCH FROM (timezone('utc',now()) - published))/3600) + 2), 1.8))::integer;
+  return floor(10000*sign(3+score)*log(abs(3+score)) / power(((EXTRACT(EPOCH FROM (timezone('utc',now()) - published))/3600) + 2), 1.8))::integer;
 end; $$
 LANGUAGE plpgsql;
 
index e8b96e3ae7a24c58b4a6a69a16d1729eac96b002..2e3ae0587573192ab244412cdcf04207f2decd73 100644 (file)
@@ -294,6 +294,7 @@ mod tests {
       post_id: inserted_post.id,
       parent_id: None,
       removed: None,
+      read: None,
       updated: None
     };
 
index a97b21202d3d3ece1e7b91f7e79aacbb821ee8af..a0d7db6c89913b42fa5c2bd3916974aada691402 100644 (file)
@@ -465,6 +465,7 @@ mod tests {
       creator_id: inserted_user.id,
       post_id: inserted_post.id,
       removed: None,
+      read: None,
       parent_id: None,
       updated: None
     };
index 28e5fb9848d6f914cabc468f3f410aa996d5f52a..ba42fe277b6a99ae0524b89b984e53298f17adcc 100644 (file)
@@ -259,7 +259,7 @@ mod tests {
       score: 1,
       upvotes: 1,
       downvotes: 0,
-      hot_rank: 864,
+      hot_rank: 1728,
       published: inserted_post.published,
       updated: None,
       subscribed: None,
@@ -284,7 +284,7 @@ mod tests {
       score: 1,
       upvotes: 1,
       downvotes: 0,
-      hot_rank: 864,
+      hot_rank: 1728,
       published: inserted_post.published,
       updated: None,
       subscribed: None,
index 61744e90aaeae11e8924b3bb3b658a97ce176362..70b6e84611eadd153429964f3579b02cadb263f7 100644 (file)
@@ -21,7 +21,7 @@ export function hotRank(comment: Comment): number {
   let now: Date = new Date();
   let hoursElapsed: number = (now.getTime() - date.getTime()) / 36e5;
 
-  let rank = (10000 * Math.sign(comment.score) * Math.log10(1 + Math.abs(comment.score))) / Math.pow(hoursElapsed + 2, 1.8);
+  let rank = (10000 * Math.sign(3+comment.score) * Math.log10(Math.abs(3+comment.score))) / Math.pow(hoursElapsed + 2, 1.8);
 
   // console.log(`Comment: ${comment.content}\nRank: ${rank}\nScore: ${comment.score}\nHours: ${hoursElapsed}`);