From 66d2fd7b98fe190eb2fd6015bd017e02b88767e7 Mon Sep 17 00:00:00 2001 From: BrokenEagle Date: Fri, 6 Mar 2020 07:04:26 +0000 Subject: [PATCH] Add limit support for related tags --- app/controllers/related_tags_controller.rb | 3 ++- app/logical/related_tag_query.rb | 11 ++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/controllers/related_tags_controller.rb b/app/controllers/related_tags_controller.rb index af329c0f7..4278c24f7 100644 --- a/app/controllers/related_tags_controller.rb +++ b/app/controllers/related_tags_controller.rb @@ -4,8 +4,9 @@ class RelatedTagsController < ApplicationController def show query = params[:query] || search_params[:query] category = params[:category] || search_params[:category] + limit = params[:limit] - @query = RelatedTagQuery.new(query: query, category: category, user: CurrentUser.user) + @query = RelatedTagQuery.new(query: query, category: category, user: CurrentUser.user, limit: limit) respond_with(@query) end end diff --git a/app/logical/related_tag_query.rb b/app/logical/related_tag_query.rb index d755e3524..cf89aa4ad 100644 --- a/app/logical/related_tag_query.rb +++ b/app/logical/related_tag_query.rb @@ -2,12 +2,13 @@ class RelatedTagQuery include ActiveModel::Serializers::JSON include ActiveModel::Serializers::Xml - attr_reader :query, :category, :user + attr_reader :query, :category, :user, :limit - def initialize(query: nil, category: nil, user: nil) + def initialize(query: nil, category: nil, user: nil, limit: nil) @user = user @query = TagAlias.to_aliased(query.to_s.downcase.strip).join(" ") @category = category + @limit = (limit =~ /^\d+/ ? limit.to_i : 25) end def pretty_name @@ -18,9 +19,9 @@ class RelatedTagQuery if query =~ /\*/ pattern_matching_tags elsif category.present? - RelatedTagCalculator.frequent_tags_for_search(query, category: Tag.categories.value_for(category)).take(25) + RelatedTagCalculator.frequent_tags_for_search(query, category: Tag.categories.value_for(category)).take(limit) elsif query.present? - RelatedTagCalculator.similar_tags_for_search(query).take(25) + RelatedTagCalculator.similar_tags_for_search(query).take(limit) else Tag.none end @@ -99,7 +100,7 @@ class RelatedTagQuery end def pattern_matching_tags - Tag.nonempty.name_matches(query).order("post_count desc, name asc").limit(50) + Tag.nonempty.name_matches(query).order("post_count desc, name asc").limit(limit) end def wiki_page