diff --git a/app/models/saved_search.rb b/app/models/saved_search.rb index 2360caae8..a8d83d7e4 100644 --- a/app/models/saved_search.rb +++ b/app/models/saved_search.rb @@ -74,14 +74,18 @@ class SavedSearch < ActiveRecord::Base def self.queries_for(user_id, label = nil, options = {}) if label - SavedSearch.where(user_id: user_id).labeled(label).pluck("distinct query") + SavedSearch.where(user_id: user_id).labeled(label).map(&:normalized_query).sort.uniq else - SavedSearch.where(user_id: user_id).pluck("distinct query") + SavedSearch.where(user_id: user_id).map(&:normalized_query).sort.uniq end end + def normalized_query + Tag.normalize_query(query, sort: true) + end + def normalize - self.query = query_array.sort.join(" ") + self.query = Tag.normalize_query(query, sort: false) self.labels = labels.map {|x| SavedSearch.normalize_label(x)}.reject {|x| x.blank?} end @@ -103,10 +107,6 @@ class SavedSearch < ActiveRecord::Base end end - def query_array - Tag.scan_tags(query) - end - def label_string labels.join(" ") end diff --git a/app/models/tag.rb b/app/models/tag.rb index 303ad692b..3f1d9448d 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -236,6 +236,15 @@ class Tag < ActiveRecord::Base query.to_s.gsub(/\u3000/, " ").strip end + def normalize_query(query, sort: true) + tags = Tag.scan_query(query.to_s) + tags = tags.map { |t| Tag.normalize_name(t) } + tags = TagAlias.to_aliased(tags) + tags = tags.sort if sort + tags = tags.uniq + tags.join(" ") + end + def scan_query(query) tagstr = normalize(query) list = tagstr.scan(/-?source:".*?"/) || []