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:
evazion
2020-04-30 01:27:38 -05:00
parent 828347dfc5
commit 986bc6e314
2 changed files with 13 additions and 3 deletions

View File

@@ -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

View File

@@ -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