PostQueryBuilder#normalize_query: don't normalize aliases by default.
`normalize_query` is used in certain places on the post index page where we don't want to pay the cost of looking up tag aliases (namely inside fast_count, in post_search_count_js, and in tag change notices). Don't normalize aliases by default unless we need to.
This commit is contained in:
@@ -746,7 +746,7 @@ class PostQueryBuilder
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def normalize_query(normalize_aliases: true, sort: true)
|
def normalize_query(normalize_aliases: false, sort: true)
|
||||||
tags = split_query
|
tags = split_query
|
||||||
tags = tags.map { |t| Tag.normalize_name(t) }
|
tags = tags.map { |t| Tag.normalize_name(t) }
|
||||||
tags = TagAlias.to_aliased(tags) if normalize_aliases
|
tags = TagAlias.to_aliased(tags) if normalize_aliases
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ class SavedSearch < ApplicationRecord
|
|||||||
def queries_for(user_id, label: nil, options: {})
|
def queries_for(user_id, label: nil, options: {})
|
||||||
searches = SavedSearch.where(user_id: user_id)
|
searches = SavedSearch.where(user_id: user_id)
|
||||||
searches = searches.labeled(label) if label.present?
|
searches = searches.labeled(label) if label.present?
|
||||||
queries = searches.pluck(:query).map { |query| PostQueryBuilder.new(query).normalize_query(sort: true) }
|
queries = searches.pluck(:query).map { |query| PostQueryBuilder.new(query).normalize_query(normalize_aliases: true, sort: true) }
|
||||||
queries.sort.uniq
|
queries.sort.uniq
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -146,7 +146,7 @@ class SavedSearch < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def normalize_query
|
def normalize_query
|
||||||
self.query = PostQueryBuilder.new(query).normalize_query(sort: false)
|
self.query = PostQueryBuilder.new(query).normalize_query(normalize_aliases: true, sort: false)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -943,7 +943,8 @@ class PostQueryBuilderTest < ActiveSupport::TestCase
|
|||||||
assert_equal("foo", PostQueryBuilder.new(" foo ").normalize_query)
|
assert_equal("foo", PostQueryBuilder.new(" foo ").normalize_query)
|
||||||
assert_equal("foo", PostQueryBuilder.new("FOO").normalize_query)
|
assert_equal("foo", PostQueryBuilder.new("FOO").normalize_query)
|
||||||
assert_equal("foo", PostQueryBuilder.new("foo foo").normalize_query)
|
assert_equal("foo", PostQueryBuilder.new("foo foo").normalize_query)
|
||||||
assert_equal("grey", PostQueryBuilder.new("gray").normalize_query)
|
assert_equal("gray", PostQueryBuilder.new("gray").normalize_query)
|
||||||
|
assert_equal("grey", PostQueryBuilder.new("gray").normalize_query(normalize_aliases: true))
|
||||||
assert_equal("aaa bbb", PostQueryBuilder.new("bbb aaa").normalize_query)
|
assert_equal("aaa bbb", PostQueryBuilder.new("bbb aaa").normalize_query)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user