const SUGGEST_SQL: &str = "SELECT p.slug, p.title, p.summary, p.published_at,
COALESCE(array_agg(t.name ORDER BY t.name) FILTER (WHERE t.name IS NOT NULL), '{}') AS tags,
CASE
WHEN p.title ILIKE '%' || $1 || '%' ESCAPE '\\' THEN 0
WHEN COALESCE(p.summary, '') ILIKE '%' || $1 || '%' ESCAPE '\\' THEN 1
ELSE 2
END AS rank
FROM posts p
LEFT JOIN post_tags pt ON p.id = pt.post_id
LEFT JOIN tags t ON pt.tag_id = t.id
WHERE p.status = 'published' AND p.deleted_at IS NULL
AND (p.title ILIKE '%' || $1 || '%' ESCAPE '\\'
OR COALESCE(p.summary, '') ILIKE '%' || $1 || '%' ESCAPE '\\'
OR EXISTS (
SELECT 1 FROM post_tags pt2 JOIN tags t2 ON t2.id = pt2.tag_id
WHERE pt2.post_id = p.id AND t2.name ILIKE '%' || $1 || '%' ESCAPE '\\'))
GROUP BY p.id
ORDER BY rank, p.published_at DESC NULLS LAST
LIMIT $2";Expand description
文章建议的 SQL:$1 为已转义 LIKE 通配符的查询词。