/pools: make autocomplete use index.

`name ilike ?` doesn't use the index. Use `lower(name) like ?` instead.
This commit is contained in:
evazion
2017-03-30 13:17:49 -05:00
parent 85a39cadf0
commit bb2f0ff795

View File

@@ -45,9 +45,9 @@ class Pool < ActiveRecord::Base
end end
def name_matches(name) def name_matches(name)
name = name.tr(" ", "_") name = normalize_name_for_search(name)
name = "*#{name}*" unless name =~ /\*/ name = "*#{name}*" unless name =~ /\*/
where("name ilike ? escape E'\\\\'", name.to_escaped_for_sql_like) where("lower(name) like ? escape E'\\\\'", name.to_escaped_for_sql_like)
end end
def search(params) def search(params)
@@ -139,6 +139,10 @@ class Pool < ActiveRecord::Base
name.gsub(/\s+/, "_") name.gsub(/\s+/, "_")
end end
def self.normalize_name_for_search(name)
normalize_name(name).mb_chars.downcase
end
def self.normalize_post_ids(post_ids, unique) def self.normalize_post_ids(post_ids, unique)
hoge = post_ids.scan(/\d+/) hoge = post_ids.scan(/\d+/)
if unique if unique