I have this Full-Text-Search function:
CREATE OR REPLACE FUNCTION search_questions(psearch text)
RETURNS TABLE (questionid INTEGER) AS $func$
BEGIN
return QUERY
SELECT DISTINCT (questions.publicationid)
FROM questions
WHERE to_tsvector(coalesce(questions.title, '')) @@ to_tsquery(psearch)
OR
publicationid IN (
SELECT DISTINCT(publications.publicationid) FROM publications WHERE to_tsvector(coalesce(publications.body, '')) @@ to_tsquery(psearch)
)
;
END
$func$ LANGUAGE plpgsql;
but it only works with a single word parameter. If I search for "user test", it returns
ERROR: syntax error in tsquery: "user test"
Is there any way to search for texts with whitespaces in it?
Kind regards
to_tsquery
creates atsquery
value from querytext, which must consist of single tokens separated by the tsquery operators & (AND), | (OR), ! (NOT), and <-> (FOLLOWED BY), possibly grouped using parentheses. In other words, the input toto_tsquery
must already follow the general rules for tsquery input – Cero