Procure por palavras-chave em várias postagens

Esta consulta permite pesquisar uma palavra-chave em todas as postagens de forma eficiente. Será significativamente mais rápida do que uma consulta posts.raw LIKE, pois utiliza a estrutura de dados de pesquisa de texto completo do PostgreSQL.

-- [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)

O que está faltando no fabuloso trecho de código é a capacidade de pesquisar por classificação.

-- [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