我有这个全文搜索功能:
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;
但它只对一个单词参数起作用。如果我搜索“用户测试”,它会返回ERROR: syntax error in tsquery: "user test"
有没有什么方法可以搜索含有空格的文本?
亲切的问候
3条答案
按热度按时间tpxzln5u1#
我找到解决方法了,开始了
替换:
to_tsquery(psearch)
具有:
plainto_tsquery(psearch)
ylamdve62#
您可以在术语周围加上单引号,但仍然使用
to_tsquery()
。tzdcorbm3#
另一种选择是使用任意运算符来连接令牌:
或: