postgresql tsquery中的语法错误:带空格的参数

enyaitl3  于 2023-03-29  发布在  PostgreSQL
关注(0)|答案(3)|浏览(224)

我有这个全文搜索功能:

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"
有没有什么方法可以搜索含有空格的文本?
亲切的问候

tpxzln5u

tpxzln5u1#

我找到解决方法了,开始了
替换:to_tsquery(psearch)
具有:plainto_tsquery(psearch)

ylamdve6

ylamdve62#

您可以在术语周围加上单引号,但仍然使用to_tsquery()

tzdcorbm

tzdcorbm3#

另一种选择是使用任意运算符来连接令牌:

select to_tsquery('simple', 'نون & خ')

'نون' & 'خ'

或:

select to_tsquery('simple', 'نون | خ')

'نون' | 'خ'

相关问题