diff options
author | Brion Vibber <brion@pobox.com> | 2010-02-04 11:06:01 -0800 |
---|---|---|
committer | Brion Vibber <brion@pobox.com> | 2010-02-04 11:06:01 -0800 |
commit | 5a1cbdc6f1e32be7b8430924a1125422d8457584 (patch) | |
tree | 28147de9aef4dd9fcec909e2ca0a13cc7d204cff /lib/popularnoticesection.php | |
parent | 7a7e2162dd7eed59e60d9360d8692abc111d940c (diff) |
Add time-based cutoffs for public tag cloud, favorited lists to speed up those queries.
Defaulting to only looking at last 90 days of activity, can be adjusted up or down.
$config['tag']['cutoff'] = 86400 * 90;
$config['popular']['cutoff'] = 86400 * 90;
Per-user and per-group tag clouds do not use the cutoff (and it doesn't help with indexing on them).
Diffstat (limited to 'lib/popularnoticesection.php')
-rw-r--r-- | lib/popularnoticesection.php | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/popularnoticesection.php b/lib/popularnoticesection.php index fbf9a60ab..296ddbbb5 100644 --- a/lib/popularnoticesection.php +++ b/lib/popularnoticesection.php @@ -59,12 +59,15 @@ class PopularNoticeSection extends NoticeSection } } $weightexpr = common_sql_weight('fave.modified', common_config('popular', 'dropoff')); + $cutoff = sprintf("fave.modified > '%s'", + common_sql_date(time() - common_config('popular', 'cutoff'))); $qry = "SELECT notice.*, $weightexpr as weight "; if(isset($tag)) { $qry .= 'FROM notice_tag, notice JOIN fave ON notice.id = fave.notice_id ' . - "WHERE notice.id = notice_tag.notice_id and '$tag' = notice_tag.tag"; + "WHERE $cutoff and notice.id = notice_tag.notice_id and '$tag' = notice_tag.tag"; } else { - $qry .= 'FROM notice JOIN fave ON notice.id = fave.notice_id'; + $qry .= 'FROM notice JOIN fave ON notice.id = fave.notice_id ' . + "WHERE $cutoff"; } $qry .= ' GROUP BY notice.id,notice.profile_id,notice.content,notice.uri,' . 'notice.rendered,notice.url,notice.created,notice.modified,' . |