search: fix bug in normalize_query for negated metatags.
Forgot to account for negated metatags in normalize_query after e987f070. Fixes a bug where wrong page counts were displayed for searches involving negated metatags due to incorrect query normalization.
This commit is contained in:
@@ -656,10 +656,14 @@ class PostQueryBuilder
|
||||
|
||||
def split_query
|
||||
scan_query.map do |term|
|
||||
if term.type == :metatag && term.value.include?(" ")
|
||||
"#{term.name}:\"#{term.value}\""
|
||||
elsif term.type == :metatag
|
||||
if term.type == :metatag && !term.negated && !term.quoted
|
||||
"#{term.name}:#{term.value}"
|
||||
elsif term.type == :metatag && !term.negated && term.quoted
|
||||
"#{term.name}:\"#{term.value}\""
|
||||
elsif term.type == :metatag && term.negated && !term.quoted
|
||||
"-#{term.name}:#{term.value}"
|
||||
elsif term.type == :metatag && term.negated && term.quoted
|
||||
"-#{term.name}:\"#{term.value}\""
|
||||
elsif term.type == :tag && term.negated
|
||||
"-#{term.name}"
|
||||
elsif term.type == :tag && term.optional
|
||||
|
||||
@@ -1041,6 +1041,12 @@ class PostQueryBuilderTest < ActiveSupport::TestCase
|
||||
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)
|
||||
assert_equal("~aaa ~bbb", PostQueryBuilder.new("~bbb ~aaa").normalize_query)
|
||||
assert_equal("bbb commentary:true", PostQueryBuilder.new("bbb commentary:true").normalize_query)
|
||||
assert_equal('bbb commentary:"true"', PostQueryBuilder.new("bbb commentary:'true'").normalize_query)
|
||||
assert_equal('-commentary:true bbb', PostQueryBuilder.new("bbb -commentary:true").normalize_query)
|
||||
assert_equal('-commentary:"true" bbb', PostQueryBuilder.new("bbb -commentary:'true'").normalize_query)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user