게시물 전체에서 키워드 검색

이 쿼리는 모든 게시글에서 키워드를 효율적으로 검색할 수 있게 해줍니다. posts.raw LIKE 쿼리보다 훨씬 빠르며, postgres의 전체 텍스트 검색 구조화 데이터를 사용하기 때문입니다.

-- [params]
-- string :query

SELECT p.id as post_id FROM posts p
LEFT JOIN post_search_data psd ON psd.post_id = p.id
WHERE psd.search_data @@ TO_TSQUERY(:query)

훌륭한 코드 스니펫에 빠져 있는 기능은 랭크로 검색하는 능력입니다.

-- [params]
-- string :query

SELECT p.id as post_id, 
       ts_rank(psd.search_data, to_tsquery('english', :query)) AS rank
FROM posts p
LEFT JOIN post_search_data psd ON psd.post_id = p.id
WHERE psd.search_data @@ TO_TSQUERY(:query)
ORDER BY rank DESC