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

时间:2013-04-15 16:25:28

标签: postgresql search full-text-search escaping

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

1 个答案:

答案 0 :(得分:21)

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

select to_tsquery('"hello there" | hi');

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

tsquery解析器识别的(非令牌)字符为:\0(null),()(空白),{{1 },|&:*。但是,如何对查询进行标记化应该基于您如何设置字典。您可能不希望在查询中出现许多其他字符,不是因为它们会导致语法错误,而是因为这意味着您没有正确地对您的查询进行标记。

使用!版本,如果它是一个简单的plainto_tsquery查询,并且您不想处理手动创建查询。