GBase 8c提供了两种用于全文检索的数据类型。tsvector类型用于为文本搜索优化的文件格式,tsquery类型用于文本查询。
svector类型表示检索单元,通常是数据库表中一行的文本字段或者这些字段的组合。to_tsvector函数通常用于解析和标准化文档字符串。
tsvector类型的值是一个唯一标准词位的有序列表。把同一个词的变型体都进行标准化得到同样的标准词,在输入的同时,tsvector会自动排序和消除重复。例如:
gbase=# SELECT 'a fat cat sat on a mat and ate a fat rat'::tsvector;
tsvector
----------------------------------------------------
'a' 'and' 'ate' 'cat' 'fat' 'mat' 'on' 'rat' 'sat'
(1 row)
从上面的例子可以看出,tsvector格式中,字符串按照空格进行分词,并按照长短和字母排序。但是如果词条中需要包含空格或标点符号,可以用引号标记。例如:
gbase=# SELECT $$the lexeme ' ' contains spaces$$::tsvector;
tsvector
----------------------------------------
' ' 'contains' 'lexeme' 'sp