# 解析查询
GaussDB提供了函数to_tsquery、plainto_tsquery和phraseto_tsquery将查询转换为tsquery数据类型，to_tsquery提供比plainto_tsquery、phraseto_tsquery更多的功能，但对其输入要求更严格。
```
to_tsquery([ config regconfig, ] querytext text) returns tsquery
```
to_tsquery从querytext中创建一个tsquery，querytext必须由运算符\& (AND)、\| (OR)、! (NOT)和\<-\>/\<n\> (PHRASE)分隔的单个token组成。这些运算符可以用圆括号分组。to_tsquery输入必须遵循tsquery输入的通用规则，具体请参见[文本检索类型](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/gaussdb-08-0015.html)。不同的是基本tsquery以token表面值作为输入，而to_tsquery使用指定或默认配置将每个token标准化成词素，并依据配置丢弃属于停用词的token。例如：
```
gaussdb=# SELECT to_tsquery('english', 'The & Fat & Rats');
   to_tsquery   
---------------
 'fat' & 'rat'
(1 row)
```
与基本tsquery中的输入一样，weight(s)可以附加到每个词素来限制它只匹配那些有相同weight(s)的tsvector词素。例如：
```
gaussdb=# SELECT to_tsquery('english', 'Fat | Rats:AB');
    to_tsquery    
------------------
 'fat' | 'rat':AB
(1 row)
```
\*也可以附加到词素来指定前缀匹配：
```
gaussdb=# SELECT to_tsquery('supern:*A & star:A*B');
        to_tsquery        
--------------------------
 'supern':*A & 'star':*AB
(1 row)
```
这样的词素将匹配tsquery中指定字符串和权重的项。
```
plainto_tsquery([ config regconfig, ] querytext text) returns tsquery
```
plainto_tsquery将未格式化的文本querytext变换为tsquery。类似于to_tsvector，文本被解析并且标准化，然后在存在的词之间插入\& (AND)布尔算子。
例如：
```
gaussdb=# SELECT plainto_tsquery('english', 'The Fat Rats');
 plainto_tsquery 
-----------------
 'fat' & 'rat'
(1 row)
```
请注意：plainto_tsquery无法识别运算符、权重标签，或在其输入中的前缀匹配标签。
```
gaussdb=# SELECT plainto_tsquery('english', 'The Fat & Rats:C');
   plainto_tsquery   
---------------------
 'fat' & 'rat' & 'c'
(1 row)
```
所有输入的标点符号作为空格符号丢弃。
与plainto_tsquery类似，phraseto_tsquery也可将未格式化的文本querytext变换为tsquery，连接词为\<-\> (PHRASE)。
