我在PG上搜索時遇到問題。我有一張有兩列名字和姓氏的表格。我希望有人能夠使用他們的名字,姓氏或全名搜索一個人。 我正在關注PG的全文搜索Railscast#343,並且據我所知,搜索應該按照我打算工作的方式工作,但事實並非如此。下面的代碼只會在您輸入確切的名字或姓氏時返回結果;它不會返回任何東西,你把名字和姓氏,或者如果你只把名字或姓氏的一部分。全文檢索不能在rails上完全運行4 PG 9.3
我將不勝感激任何關於如何使這項工作的意見。
型號
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)
感謝您的幫助!我在使用PG時無法使用「%」的印象。給出我可以這樣的事實,我做出了迄今爲止工作的聲明:where(「first_name ILIKE?OR last_name ILIKE?OR first_name ||''|| last_name ILIKE?」,「%#{query}%」,「 %#{query}%「,」%#{query}%「)' – DJF 2014-11-01 17:54:14