post queries: switch to new post search engine.
Switch to the post search engine using the new PostQuery parser. The new
engine fully supports AND, OR, and NOT operators and grouping expressions
with parentheses.
Highlights:
New OR operator:
* `skirt or dress` (same as `~skirt ~dress`)
Tags can be grouped with parentheses:
* `1girl (skirt or dress)`
* `(blonde_hair blue_eyes) or (red_hair green_eyes)`
* `~(blonde_hair blue_eyes) ~(red_hair green_eyes)` (same as above)
* `(pantyhose or thighhighs) (black_legwear or brown_legwear)`
* `(~pantyhose ~thighhighs) (~black_legwear ~brown_legwear)` (same as above)
Metatags can be OR'd together:
* `user:evazion or fav:evazion`
* `~user:evazion ~fav:evazion`
Wildcard tags can combined with either AND or OR:
* `black_* white_*` (find posts with at least one black_* tag AND one white_* tag)
* `black_* or white_*` (find posts with at least one black_* tag OR one white_* tag)
* `~black_* ~white_*` (same as above)
See 4c7cfc73 for more syntax examples.
Fixes #4949: And+or search?
Fixes #5056: Wildcard searches return unexpected results when combined with OR searches
This commit is contained in:
@@ -273,7 +273,7 @@ class BulkUpdateRequestProcessor
|
||||
"mass update {{#{args[0]}}} -> {{#{args[1]}}}"
|
||||
when :nuke
|
||||
|
||||
if PostQuery.new(args[0]).is_single_tag?
|
||||
if PostQuery.normalize(args[0]).is_simple_tag?
|
||||
"nuke [[#{args[0]}]]"
|
||||
else
|
||||
"nuke {{#{args[0]}}}"
|
||||
@@ -292,7 +292,7 @@ class BulkUpdateRequestProcessor
|
||||
def self.nuke(tag_name)
|
||||
# Reject existing implications from any other tag to the one we're nuking
|
||||
# otherwise the tag won't be removed from posts that have those other tags
|
||||
if PostQuery.new(tag_name).is_single_tag?
|
||||
if PostQuery.normalize(tag_name).is_simple_tag?
|
||||
TagImplication.active.where(consequent_name: tag_name).each { |ti| ti.reject!(User.system) }
|
||||
TagImplication.active.where(antecedent_name: tag_name).each { |ti| ti.reject!(User.system) }
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user