Skip to main content

SUGGEST_SQL

Constant SUGGEST_SQL 

Source
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 通配符的查询词。