diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 329439702..fa930159a 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -2125,6 +2125,7 @@ en: search_help: | You may include special search operators: + `order:views` Results will be ordered by view count (as opposed to relevence) `order:latest` Results will be ordered by last post time (as opposed to relevence) `status:open` Only show open topics `status:closed` Only show closed topics diff --git a/lib/search.rb b/lib/search.rb index 392c8e8dd..9ff93d8b9 100644 --- a/lib/search.rb +++ b/lib/search.rb @@ -159,6 +159,9 @@ class Search elsif word == 'order:latest' @order = :latest nil + elsif word == 'order:views' + @order = :views + nil elsif word =~ /category:(.+)/ @category_id = Category.find_by('name ilike ?', $1).try(:id) nil @@ -346,6 +349,12 @@ class Search else posts = posts.order("posts.created_at DESC") end + elsif @order == :views + if opts[:aggregate_search] + posts = posts.order("MAX(topics.views) DESC") + else + posts = posts.order("topics.views DESC") + end else posts = posts.order("TS_RANK_CD(TO_TSVECTOR(#{query_locale}, topics.title), #{ts_query}) DESC")