From ec56d7abc9640f019ab5344d0eac8fb8b2d7ed0d Mon Sep 17 00:00:00 2001 From: r888888888 Date: Mon, 24 Jun 2013 15:08:42 -0700 Subject: [PATCH] default tag listing now weighted by time --- app/models/tag.rb | 3 --- app/presenters/post_set_presenters/post.rb | 25 +++++++++++++++------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/app/models/tag.rb b/app/models/tag.rb index 7da5b672e..0c05a80a3 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -117,9 +117,6 @@ class Tag < ActiveRecord::Base end module StatisticsMethods - def trending - raise NotImplementedError - end end module NameMethods diff --git a/app/presenters/post_set_presenters/post.rb b/app/presenters/post_set_presenters/post.rb index 86a0f7f0c..4d5058018 100644 --- a/app/presenters/post_set_presenters/post.rb +++ b/app/presenters/post_set_presenters/post.rb @@ -23,16 +23,25 @@ module PostSetPresenters end def popular_tags - n = 1 - results = [] + Cache.get("popular-tags", 1.hour) do + CurrentUser.scoped(User.admins.first, "127.0.0.1") do + n = 1 + results = [] - while results.empty? && n < 256 - query = n.days.ago.strftime("date:>%Y-%m-%d") - results = RelatedTagCalculator.calculate_from_sample_to_array(query).map(&:first) - n *= 2 + while results.empty? && n < 256 + query = n.days.ago.strftime("date:>%Y-%m-%d") + results = RelatedTagCalculator.calculate_from_sample_to_array(query) + n *= 2 + end + + results.map! do |tag_name, recent_count| + tag = Tag.find_or_create_by_name(tag_name) + [tag_name, recent_count.to_f / tag.post_count.to_f] + end + + results.sort_by! {|x| -x[1]}.map(&:first) + end end - - results end def pattern_tags