Add a "custom" hot sort for feature voting


(Philip Battin) #1

Will it be possible to have a sorting which is not only the all time highest voted posts?

e.g.

  • Most votes / top (by week, months, year, all time)
  • Hot posts (trending within certain timeframe set by the admin)

One example of this is in action can be seen at UserVoice where the top ideas page basically stays static as top ideas have between 800 - 1,700 votes.

A more interesting page is the hot page, as you will see posts with relative low amounts of votes, that are trending within a certain amount of time.

This enables users to discover new posts and not just sit in the recent posts view and find them in there. Also basically how Reddit works :slight_smile:


Discourse Voting
(Joe Buhlig) #2

I like the idea. I’m unsure of the implementation method, though. Of course that’s where my brain always takes me when I read suggestions like this. :wink:

I did add in the ability to sort ASC/DESC with a query string: order=votes

Is there a query string variable for narrowing the topics based on timestamp? That might be a better option in the near term.

I really like this idea.


(Philip Battin) #3

I am not an expert on algorithms and these kinds of things, but i would imagine that, for a hot page to work the best, you would need to calculate the individual ‘trend score / trajectory’ of each post within a certain amount of time and not just sort by what got the most votes the last month.

Basic example:

  • Post A: Got 10 votes within 1 day = trend score 10
  • Post B: Got 10 votes within 3 days = trend score 3
  • Post C: Got 50 votes within 10 days = trend score 5

In the HOT category the order would be

  1. Post A (with only 10 votes)
  2. Post C (with 50 votes)
  3. Post B (with 10 votes)

Maybe votes from specific groups or levels of users matter more when calculating the trend score. e.g. in my community i could see the value in giving moderators some kind of curator role where their vote matters more because they are really knowledgeable about the topics people discuss - so their role could be to upvote good topics and bump them into the hot category. :slight_smile:


(Joe Buhlig) #4

Makes sense. If we can nail down the weighting of votes, I can add a field to the topic that gives it a rating and then add that rating as a sort option. That would allow something along these lines: ?order=vote_rating. But that doesn’t solve the time period you mentioned.[quote=“commonpawn, post:26, topic:40121”]
Hot posts (trending within certain timeframe set by the admin)
[/quote]

I’m not sure that part is worth it. I could see the value in top votes given a time frame and a sort by this topic rating, but combining the two might be overkill.


(Philip Battin) #5

Yeah i guess the ultimate solution would be a Hot sorting criteria which is scaleable and works for a forum with a lot of activity (100s of posts per day) to one with very little (10 posts per week - e.g. an idea board like UserVoice).

Maybe you would need some kind of decay factor in calculating the score to make this scaleable.
Check out this thread on StackExchange. Looks useful: What formula should be used to determine "hot" questions? - Meta Stack Exchange – and it is written by our very own @codinghorror :stuck_out_tongue:


(Joe Buhlig) #6

Agreed. My thinking is that this is a custom field that gets recalculated with a sidekiq job. The duration would need to be determined, though. Every 30 minutes? Every hour? I would want it to be as infrequent as we can get away with.

And thanks for the link. I’ll need a bit to digest that one. :wink:


(Sam Saffron) #7

My call here is that this is a V3 or V4 feature, we may get to it eventually. When we do I would just like to change it so “plugins” can inject extra signal into the existing hot algorithm.