如何在传递给to_tsquery的字符串中为特殊字符预留空格?例如,这种查询:
select to_tsquery('AT&T');产生:
NOTICE: text-search query contains only stop words or doesn't contain lexemes, ignored
to_tsquery
------------
(1 row)编辑:我也注意到在to_tsvector中也有同样的问题。
发布于 2016-02-27 19:32:23
一个简单的解决方案是创建tsquery,如下所示:
select $$'AT&T'$$::tsquery;您可以进行更复杂的查询:
select $$'AT&T' & Phone | '|Bang!'$$::tsquery;有关更多信息,请参阅文本搜索docs。
发布于 2017-01-23 19:10:23
我发现这个使用plainto_tsquery('AT&T)函数https://stackoverflow.com/a/16020565/350195的注释非常有用
发布于 2013-01-01 00:51:16
如果你想把'AT&T‘当做一个搜索词,你需要一些定制的组件,因为默认的解析器会把它分成两个词:
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
https://stackoverflow.com/questions/14103880
复制相似问题