必须避免哪些字符才能确保 PSQLException:错误:tsquery 中的语法错误不会发生? 该文档没有说明如何转义搜索字符串:http://www.postgresql.org/docs/8.3/static/datatype-textsearch.html
答案 0 :(得分:21)
如果您希望将它们用作短语/逐字词,或者它们包含语法中使用的字符,请在您的字词周围使用引号:
select to_tsquery('"hello there" | hi');
请记住,你不应该在你的条件中真的有疯狂的角色,因为它们不会匹配tsvector中的任何东西。
tsquery解析器识别的(非令牌)字符为:\0
(null),(
,)
,
(空白),{{1 },|
,&
,:
和*
。但是,如何对查询进行标记化应该基于您如何设置字典。您可能不希望在查询中出现许多其他字符,不是因为它们会导致语法错误,而是因为这意味着您没有正确地对您的查询进行标记。
使用!
版本,如果它是一个简单的plainto_tsquery
查询,并且您不想处理手动创建查询。