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
I found how to solve it. Here it goes
Replace:
to_tsquery(psearch)
with:
plainto_tsquery(psearch)
You can put single quotes around your terms and still use to_tsquery()
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With