【发布时间】:2014-10-31 15:45:41
【问题描述】:
我在 PG 上搜索时遇到问题。我有一个包含名字和姓氏两列的表。我希望某人能够使用他们的名字、姓氏或全名来搜索一个人。 我正在关注关于 PG 的全文搜索的 Railscast #343,据我所知,搜索应该像我打算的那样工作,但它没有。下面的代码只会在您输入确切的名字或姓氏时返回结果;如果您输入了名字和姓氏,或者您只输入了名字或姓氏的一部分,它不会返回任何内容。
对于如何按我的意图进行这项工作的任何意见,我将不胜感激。
型号
def self.text_search(query)
if query.present?
where("first_name @@ :q or last_name @@ :q", q: query)
else
where(nil)
end
end
控制器
def index
@members = @organization.members.text_search(params[:query]).page(params[:page]).per(20)
end
控制台输出
SELECT COUNT(count_column) FROM (SELECT 1 AS count_column FROM "members" WHERE "members"."organization_id" = $1 AND (first_name @@ 'jon' or last_name @@ 'jon') AND (expiration_date <= '2014-11-30') AND (expiration_date > '2014-10-31') LIMIT 20 OFFSET 0)
【问题讨论】:
标签: postgresql search ruby-on-rails-4 full-text-search railscasts