Suche nach Schlüsselwörtern in Beiträgen

Mit dieser Abfrage können Sie effizient nach einem Schlüsselwort in allen Beiträgen suchen. Sie ist deutlich schneller als eine Abfrage mit posts.raw LIKE, da sie die strukturierten Daten der PostgreSQL Volltextsuche nutzt.

-- [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 „Gefällt mir“

Was in dem fabelhaften Code-Snippet fehlt, ist die Möglichkeit, nach Rang zu suchen.

-- [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 „Gefällt mir“