rendered paste bodyCREATE OR REPLACE FUNCTION f_search_all(text, text, text, int, int)
RETURNS setof t_search AS $$
SELECT DISTINCT(dr.id),
doc.name,
doc.description,
dt.mime_type,
dt.type_name,
dt.image_url,
dr.document_id,
dr.revision_external_id,
dr.user_id_committed,
dr.filesize,
doc.keywords,
c.content_text,
rank(c.fti_idx, q) AS rank_fti,
rank(doc.keywords_idx, q) AS rank_keywords,
rank(doc.name_idx, q) AS rank_name,
rank(doc.description_idx, q) AS rank_description,
(rank(c.fti_idx, q)
+ rank(doc.keywords_idx, q)
+ rank(doc.name_idx, q)
+ rank(doc.description_idx, q) ) AS rank_total,
dr.last_change,
headline(c.content_text, q, 'StartSel=$2, StopSel=$3, MinWords=$4, MaxWords=$5'),
headline(doc.keywords, q, 'StartSel=$2, StopSel=$3, MinWords=$4, MaxWords=$5'),
headline(doc.name, q, 'StartSel=$2, StopSel=$3, MinWords=$4, MaxWords=$5'),
headline(doc.description, q, 'StartSel=$2, StopSel=$3, MinWords=$4, MaxWords=$5')
FROM
documents doc,
document_revisions dr,
content c,
document_types dt,
to_tsquery($1) AS q
WHERE
(c.fti_idx @@ q
OR doc.keywords_idx @@ q
OR doc.name_idx @@ q
OR doc.description_idx @@ q)
AND c.revision_id=dr.id
AND doc.id=dr.document_id
AND doc.document_type_id=dt.id
ORDER BY rank_total DESC;
$$ LANGUAGE sql;