From 6840fd64f9bee9fff263ed797350a316ebdb98c6 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Thu, 6 Jul 2023 07:22:48 -0400 Subject: [PATCH] Make sure hot rank sorts for post and community filter by positive hot ranks. (#3497) * Make sure hot rank sorts for post and community filter by positive hot ranks. - Context #2994 * Adding a comment. --- crates/db_views/src/post_view.rs | 10 ++++++++-- crates/db_views_actor/src/community_view.rs | 6 +++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/crates/db_views/src/post_view.rs b/crates/db_views/src/post_view.rs index d1e974d8a..07ad40d45 100644 --- a/crates/db_views/src/post_view.rs +++ b/crates/db_views/src/post_view.rs @@ -391,8 +391,14 @@ impl<'a> PostQuery<'a> { } query = match self.sort.unwrap_or(SortType::Hot) { - SortType::Active => query.then_order_by(post_aggregates::hot_rank_active.desc()), - SortType::Hot => query.then_order_by(post_aggregates::hot_rank.desc()), + SortType::Active => query + // Hot ranks fade to zero after a few days, and this filter drastically reduces + // the number of rows needed to be joined to. + .filter(post_aggregates::hot_rank_active.gt(1)) + .then_order_by(post_aggregates::hot_rank_active.desc()), + SortType::Hot => query + .filter(post_aggregates::hot_rank.gt(1)) + .then_order_by(post_aggregates::hot_rank.desc()), SortType::New => query.then_order_by(post_aggregates::published.desc()), SortType::Old => query.then_order_by(post_aggregates::published.asc()), SortType::NewComments => query.then_order_by(post_aggregates::newest_comment_time.desc()), diff --git a/crates/db_views_actor/src/community_view.rs b/crates/db_views_actor/src/community_view.rs index 94bcdaf92..899931c4f 100644 --- a/crates/db_views_actor/src/community_view.rs +++ b/crates/db_views_actor/src/community_view.rs @@ -184,7 +184,11 @@ impl<'a> CommunityQuery<'a> { ); } match self.sort.unwrap_or(Hot) { - Hot | Active => query = query.order_by(community_aggregates::hot_rank.desc()), + Hot | Active => { + query = query + .filter(community_aggregates::hot_rank.gt(1)) + .order_by(community_aggregates::hot_rank.desc()) + } NewComments | TopDay | TopTwelveHour | TopSixHour | TopHour => { query = query.order_by(community_aggregates::users_active_day.desc()) }