PG 검색에 문제가 있습니다. 이름과 성이 두 개의 열이있는 표가 있습니다. 나는 누군가가 그들의 이름, 성 또는 성을 사용하여 한 사람을 찾을 수 있기를 바랍니다. PG에 대한 전체 텍스트 검색에서 Railscast # 343을 수행 중이었고 이해할 수있는 부분에 대해서는 검색이 작동하도록되어 있지만 작동하지는 않습니다. 아래 코드는 정확한 성이나 이름을 넣을 때만 결과를 반환합니다. 이름과 성을 입력했거나 성이나 이름의 일부만 입력하면 아무 것도 반환하지 않습니다.전체 텍스트 검색이 레일에서 완전히 작동하지 않습니다. 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