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

时间:2017-04-27 23:09:56

标签: postgresql full-text-search

我有这个全文搜索功能:

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"

有没有办法搜索包含空格的文本?

亲切的问候

2 个答案:

答案 0 :(得分:10)

我找到了解决方法。 在这里

替换: to_tsquery(psearch)

使用: plainto_tsquery(psearch)

答案 1 :(得分:2)

您可以在条款周围加上单引号,但仍然使用var TasksContainer = React.createClass({ getInitialState: function(){ return { tasks: this.props.tasks } console.log(tasks) }, ...