diff --git a/app/models/package.rb b/app/models/package.rb index 3662f02..320d21b 100644 --- a/app/models/package.rb +++ b/app/models/package.rb @@ -1,3 +1,20 @@ class Package < ActiveRecord::Base has_many :screenshots, :inverse_of=>:package + + # Use PostgreSQL's full-text search capability for the user search + def self.text_search(query) + if query.present? + # Add a rank column to each result + rank = <<-RANK + ts_rank(to_tsvector(packages.name), plainto_tsquery(#{sanitize(query)})) + + + ts_rank(to_tsvector(packages.description), plainto_tsquery(#{sanitize(query)})) + RANK + + # Do the full-text search and return results by rank + where("packages.name @@ :q or packages.description @@ :q", q: query).order("#{rank} desc") + else + scoped + end + end end