5 ms·
Ask HN: How do you determine "hot" or "popular" user-generated items?
I put together a little app this weekend which lets people translate phrases through different languages and see the often funny or interesting results: http://translation-telephone.com
On the sidebar, I display "recent" and "popular" phrases, to encourage people to browse others. Right now, "popular" is a random three of the top 30 viewed phrases - really basic.
I'd like to make it smarter and I imagine there are a variety of techniques that I can use, like the HN metric for frontpage news.
What techniques do you guys suggest? Thanks!
(Note: Architecture is App Engine/Python, if that's relevant)
- Subcide 16y agoMight be able to use something like this as a starting point (though it's vote-based, but seems to support decay over time) http://code.google.com/appengine/articles/overheard.html http://code.google.com/appengine/articles/overheard.html
- Visit_Scotland 16y agohotness needs a time based component like velocity coupled with relevance e.g. responded to ('liked' or viewed) x times within y minutes + relevance (it's very funny &| it's topical &| it's trending elsewhere)
- mindcrime 16y agoThe most straightforward way is to start with some default value for "hotness" and then decay the hotness by time (a logarithmic basis is popular for this), and increase hotness based on activity (votes, comments, etc.) For a real-world example (albeit one from code that's not much beyond "prototype" status) feel free to look at what we do in Neddick: https://github.com/fogbeam/Neddick/blob/master/grails-app/services/org/fogbeam/neddick/EntryService.groovy https://github.com/fogbeam/Neddick/blob/master/grails-app/se... look at the calculateScore() and calculateHotness() methods in particular. What we do there is basically just use 0 as the default, count each upvote as +1 to score and each downvote as -1 to score, then use the score as the hotness, before decaying by age. It's simple and not optimized at all, but it gives the general effect we're looking for.
- epe 16y agoThe clearest explanation I've ever seen of this method is here: http://www.evanmiller.org/rank-hotness-with-newtons-law-of-cooling.html http://www.evanmiller.org/rank-hotness-with-newtons-law-of-c...
- mindcrime 16y agoHeh, yeah, I think that's the same page I originally used to come up with an approach to doing this. There are also some discussions of this same topic on StackExchange and some other sites.