首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转义to_tsquery中的特殊字符

转义to_tsquery中的特殊字符
EN

Stack Overflow用户
提问于 2013-01-01 00:29:45
回答 3查看 11.9K关注 0票数 21

如何在传递给to_tsquery的字符串中为特殊字符预留空格?例如,这种查询:

代码语言:javascript
复制
select to_tsquery('AT&T');

产生:

代码语言:javascript
复制
NOTICE:  text-search query contains only stop words or doesn't contain lexemes, ignored

 to_tsquery 
------------

(1 row)

编辑:我也注意到在to_tsvector中也有同样的问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-27 19:32:23

一个简单的解决方案是创建tsquery,如下所示:

代码语言:javascript
复制
select $$'AT&T'$$::tsquery;

您可以进行更复杂的查询:

代码语言:javascript
复制
select $$'AT&T' & Phone | '|Bang!'$$::tsquery;

有关更多信息,请参阅文本搜索docs

票数 8
EN

Stack Overflow用户

发布于 2017-01-23 19:10:23

我发现这个使用plainto_tsquery('AT&T)函数https://stackoverflow.com/a/16020565/350195的注释非常有用

票数 5
EN

Stack Overflow用户

发布于 2013-01-01 00:51:16

如果你想把'AT&T‘当做一个搜索词,你需要一些定制的组件,因为默认的解析器会把它分成两个词:

代码语言:javascript
复制
steve@steve@[local] =# select * from ts_parse('default', 'AT&T');
 tokid | token 
-------+-------
     1 | AT
    12 | &
     1 | T
(3 rows)
steve@steve@[local] =# select * from ts_debug('simple', 'AT&T');
   alias   |   description   | token | dictionaries | dictionary | lexemes 
-----------+-----------------+-------+--------------+------------+---------
 asciiword | Word, all ASCII | AT    | {simple}     | simple     | {at}
 blank     | Space symbols   | &     | {}           |            | 
 asciiword | Word, all ASCII | T     | {simple}     | simple     | {t}
(3 rows)

正如您从the documentation for CREATE TEXT PARSER中看到的,这并不是很简单,因为解析器似乎需要是一个C函数。

你可能会发现这篇关于某人将"underscore_word“识别为单个令牌的帖子很有用:http://postgresql.1045698.n5.nabble.com/Configuring-Text-Search-parser-td2846645.html

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14103880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档