هذا الاستعلام سيسمح لك بالبحث بكفاءة عن كلمة رئيسية عبر جميع المنشورات. سيكون أسرع بكثير من استعلام posts.raw LIKE، لأنه يستخدم بيانات البحث النصي الكامل (full text search) المهيكلة في postgres full text search
-- [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