Rechercher des mots-clés dans les publications

Cette requête vous permet de rechercher efficacement un mot-clé dans tous les messages. Elle sera nettement plus rapide qu’une requête posts.raw LIKE, car elle utilise les données structurées de la recherche en texte intégral de 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)
19 « J'aime »

Ce qui manque dans le fabuleux extrait de code, c’est la capacité de rechercher par rang.

-- [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
1 « J'aime »