From 94f20ba684ce534411f72a32ebc5b0ad6bba8eca Mon Sep 17 00:00:00 2001 From: rmaskey Date: Sun, 10 Oct 2010 08:43:43 -0700 Subject: [PATCH] resolution for issue #151 - search with multiple words --- app/models/person.rb | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/app/models/person.rb b/app/models/person.rb index 76bcd2aa3..445b1bba9 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -34,8 +34,23 @@ class Person /^(https?):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*(\.[a-z]{2,5})?(:[0-9]{1,5})?(\/.*)?$/ix def self.search(query) - query = Regexp.escape( query.to_s.strip ) - Person.all('profile.first_name' => /^#{query}/i) | Person.all('profile.last_name' => /^#{query}/i) + qTokens = query.to_s.strip.split(" ") + fullQueryText = Regexp.escape( query.to_s.strip ) + + p = Person.all('profile.first_name' => /^#{fullQueryText}/i) \ + | Person.all('profile.last_name' => /^#{fullQueryText}/i) + + qTokens.each { + |token| + + q = Regexp.escape( token.to_s.strip ) + p = Person.all('profile.first_name' => /^#{q}/i) \ + | Person.all('profile.last_name' => /^#{q}/i) \ + | p + + } + + return p end def real_name