Project-Id-Version: Trac 0.12
POT-Creation-Date: 2008-01-30 09:20+0100
PO-Revision-Date: 2010-07-19 23:05+0200
Last-Translator: Jeroen Ruigrok van der Werven <>
Language-Team: en_US <>
Plural-Forms: nplurals=2; plural=(n != 1)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Generated-By: Babel 0.9.6

Warning: Can't synchronize with repository "(default)" (Unsupported version control system "git": Can't find an appropriate component, maybe the corresponding plugin was not enabled? ). Look in the Trac log for more information.

Ticket #107 (new improvement)

Opened 10 years ago

Last modified 9 years ago

popularity decay, and wishlist

Reported by: sebastian Owned by:
Priority: minor Milestone: 2.4
Component: core Version:
Keywords: media, ranking, popularity Cc:


This was published on the phTagr mailing list:

in the last time I'm thinking about a new popularity ranking for media - the current version is really primitive and quick'n'dirty!

In the current version (r536) the app/controllers/images_controllers.php:49 function _updateRating() calls the Media model function updateRanking() after some checks. In models/media.php:539 the new value is calculated, based on the time difference to the last view and old value:

$timediff = time() - strtotime($data['Media']['lastview']);
$ranking = (0.9 * $data['Media']['ranking']) + (0.1 / ($timediff + 1));

My new proposal would be a simple point based ranking. Each specific action adds (or subtracts) points from the ranking value. An action could be: Adding tag, category, location, comment or request of different preview sizes whereas a bigger preview gets more points.

Example points could be:

  • Mini size: 0.01 points
  • Thumb size: 0.1 points
  • Preview size: 0.5 point
  • New tag, category, location: 1 points
  • Viewing a media: 2 points
  • New comment: 10 points
  • Download: 25 points

Actions where a user interacts with the media (like adding a tag, writing a comment or viewing a specific media) should get higher values than "passive" actions where the user views many media at once (like within the explorer view or via google maps).

Each action or preview request is counted once in a session. So at the home page each "newest picture" and "comment picture" gets a mini points. Each media shown in the explorer gets points of thumb previews. And so on...

The problem with this point ranking is that a popular media never loses its points. If an important media isn't viewed for a while the importance should shrink again over time... To gain popularity for new media is quite hard and might not reflect the "reality".

Anyway: What do you think of this proposal? Any suggestions?


PS: And if you know a nicer and simpler algorithm to rank the popularity of one media which models the reality better, please let me know.

Change History

comment:1 Changed 9 years ago by aapezzuto

  • Summary changed from Better Media Popularity Ranking to popularity decay, and wishlist

I posted a reply on the mailing list, but given further thought here are the features I would like to see, and how I would like to see points be awarded and decay

  • Options configurable by admin
  • Manual awarding of points by admin
  • Manual point over-ride and duration (for the next 3 days treat this like it has 500 points, regardless of actual value)
  • a set of actions that can cause points to be awarded (amount to be set by admin)
  • option to track popularity, in set incraments, or marked by an event (such as point decay)
  • allow a stepwise function for popularity decay, such that different current point ranges could cause more or less decay.
    • Example
      • less than 0 pts, +1 pts
      • 0 pts, -0pts
      • 1-10 pts, -1pts
      • 11-50 pts, -2pts
      • 51-200 pts, -5pts
      • more than 201 pts, - 5% of points round down
  • track activity sense last decay (number of points awarded total)
  • Trigger decay based on activity, time, or both (so the last to happen triggers the decay)
  • keep a record of point values, based on daily change, allowing a history of popularity to be viewed, or the ability to see what was most popular on a given day.

comment:2 Changed 9 years ago by sebastian

  • Cc added

Hi aapezzuto,

thank you for your great thoughts. You wrote that you replied to the mailing list, but I never received your reply. Also the list archive ( has no reply :-( Would you like to resend it?

Regarding the Popularity decay: Could you explain when the decay is triggered? Should it be triggered every day or month by the system and decays all points? Would you mind to describe in detail your idea? Some kind of use cases would be great, too.

I would like to have an automatic way of popularity system, where the system detects good and bad pictures. On the other hand there could be a voting feature where people can give a vote. The simples this would be a 'I like it' button or more complex with 5 voting points. The voting can be used for the automatic popularity system.

Further, could you describe why you would like to have a manual awarding option for the admin and what kind of options/configuration would be mandatory for you?

Regarding the tracking of activity: This would be more a general statistic like #3?

Feel free to continue this interesting discussion on the mailing list!

Note: See TracTickets for help on using tickets.