PSQLException:错误:tsquery中的语法错误

ide*_*xer 16 postgresql search full-text-search escaping

必须避免哪些字符才能确保PSQLException:错误:tsquery中的语法错误不会发生?该文档没有说明如何转义搜索字符串:http://www.postgresql.org/docs/8.3/static/datatype-textsearch.html

Chr*_*loe 27

如果您希望将它们作为短语/逐字表示,或者它们包含语法中使用的字符,请在您的术语周围使用引号:

select to_tsquery('"hello there" | hi');
Run Code Online (Sandbox Code Playgroud)

请记住,你不应该在你的条件中真的有疯狂的角色,因为它们不会匹配tsvector中的任何东西.

由tsquery分析器识别的(非令牌)字符是:\0(空), ,(,)(?空白), ,|,,& 和.但是,如何对查询进行标记化应该基于您如何设置字典.您的查询中可能不需要很多其他字符,不是因为它们会导致语法错误,而是因为它意味着您没有正确地标记查询.:*!

plainto_tsquery如果它是一个简单的AND查询而您不想处理手动创建查询,请使用该版本.

  • 我在这里缺少什么?`select to_tsquery('"hello there" | hi');` 会导致 `ERROR: tsquery 中的语法错误`。这是一个“不起作用”的例子吗? (7认同)
  • 字典中没有出现的任何字符。对于英语词典,我会说:`[^A-Za-z0-9] == crazy`。 (3认同)
  • +感谢`plainto_tsquery`提示 (3认同)
  • 请定义“疯狂的角色”,然后我的问题就得到了解答:-) (2认同)