FIX: user search was stemming

This commit is contained in:
Sam 2014-07-08 12:41:38 +10:00
parent 8e31fe4835
commit fae3eab580

View File

@ -184,7 +184,7 @@ class Search
def user_search def user_search
users = User.includes(:user_search_data) users = User.includes(:user_search_data)
.where("user_search_data.search_data @@ #{ts_query}") .where("user_search_data.search_data @@ #{ts_query("simple")}")
.order("CASE WHEN username_lower = '#{@original_term.downcase}' THEN 0 ELSE 1 END") .order("CASE WHEN username_lower = '#{@original_term.downcase}' THEN 0 ELSE 1 END")
.order("last_posted_at DESC") .order("last_posted_at DESC")
.limit(@limit) .limit(@limit)
@ -249,11 +249,13 @@ class Search
"TO_TSQUERY(#{locale || query_locale}, #{query})" "TO_TSQUERY(#{locale || query_locale}, #{query})"
end end
def ts_query def ts_query(locale=nil)
@ts_query ||= begin if !locale
all_terms = @term.gsub(/[:()&!'"]/,'').split @ts_query ||= begin
query = Post.sanitize(all_terms.map {|t| "#{PG::Connection.escape_string(t)}:*"}.join(" & ")) Search.ts_query(@term, locale)
"TO_TSQUERY(#{query_locale}, #{query})" end
else
Search.ts_query(@term, locale)
end end
end end