Add limit support for related tags
This commit is contained in:
@@ -4,8 +4,9 @@ class RelatedTagsController < ApplicationController
|
|||||||
def show
|
def show
|
||||||
query = params[:query] || search_params[:query]
|
query = params[:query] || search_params[:query]
|
||||||
category = params[:category] || search_params[:category]
|
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)
|
respond_with(@query)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -2,12 +2,13 @@ class RelatedTagQuery
|
|||||||
include ActiveModel::Serializers::JSON
|
include ActiveModel::Serializers::JSON
|
||||||
include ActiveModel::Serializers::Xml
|
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
|
@user = user
|
||||||
@query = TagAlias.to_aliased(query.to_s.downcase.strip).join(" ")
|
@query = TagAlias.to_aliased(query.to_s.downcase.strip).join(" ")
|
||||||
@category = category
|
@category = category
|
||||||
|
@limit = (limit =~ /^\d+/ ? limit.to_i : 25)
|
||||||
end
|
end
|
||||||
|
|
||||||
def pretty_name
|
def pretty_name
|
||||||
@@ -18,9 +19,9 @@ class RelatedTagQuery
|
|||||||
if query =~ /\*/
|
if query =~ /\*/
|
||||||
pattern_matching_tags
|
pattern_matching_tags
|
||||||
elsif category.present?
|
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?
|
elsif query.present?
|
||||||
RelatedTagCalculator.similar_tags_for_search(query).take(25)
|
RelatedTagCalculator.similar_tags_for_search(query).take(limit)
|
||||||
else
|
else
|
||||||
Tag.none
|
Tag.none
|
||||||
end
|
end
|
||||||
@@ -99,7 +100,7 @@ class RelatedTagQuery
|
|||||||
end
|
end
|
||||||
|
|
||||||
def pattern_matching_tags
|
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
|
end
|
||||||
|
|
||||||
def wiki_page
|
def wiki_page
|
||||||
|
|||||||
Reference in New Issue
Block a user