返回首页

gbase数据、南大通用产品文档:GBase8c

更新日期:2024年09月11日

解析文档
GBase 8c 中提供了to_tsvector 函数把文档处理成tsvector 数据类型。
to_tsvector([ config regconfig, ] document text) returns tsvector
to_tsvector 将文本文档解析为token,
再将token 简化到词素,
并返回一个tsvector。
其中
tsvector 中列出了词素及它们在文档中的位置。文档是根据指定的或默认的文本搜索分词器
进行处理的。这里有一个简单的例子:
gbase=#SELECT to_tsvector('english', 'a fat cat sat on a mat - it ate a fat rats');
to_tsvector
-----------------------------------------------------
'ate':9 'cat':3 'fat':2,11 'mat':7 'rat':12 'sat':4
通过以上例子可发现结果tsvector 不包含词a、on 或者it,rats 变成rat,并且忽略标点
符号-。
to_tsvector 函数内部调用一个解析器,将文档的文本分解成token 并给每个token 指定
一个类型。
对于每个token,
有一系列词典可供查询。
词典系列因token 类型的不同而不同。
识别token 的第一本词典将发出一个或多个标准词素来表示token。例如:

rats 变成rat 因为词典认为词rats 是rat 的复数形式。

有些词被作为停用词(请参考16.8.6.2 停用词)
,这样它们就会被忽略,因为它们出现
得太过频繁以致于搜索中没有用处。比如例子中的a、on 和it。

如果没有词典识别token,那么它也被忽略。在这个例子中,符号“-”被忽略,因为
词典没有给它分配token 类型(空间符号)
,即空间记号永远不会被索引。
语法解析器、词典和要索引的token 类型由选定的文本搜索分词器决定。可以在同一个
数据库中有多种不同的分词器,以及提供各种语言的预定义分词器。在以上例子中,使用
缺省分词器english。
函数setweight 可以给tsvector 的记录加权重,权重是字母A、B、C、D 之一。这通常
用于标记来自文档不同部分的记录,比如标题、正文。之后,这些信息可以用于排序搜索结

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
636
果。
因为to_tsvector(NULL)会返回空,当字段可能是空的时候,建议使用coalesce。以下是
推荐的为结构化文档创建tsvector 的方法:
gbase=#CREATE TABLE tsearch.tt (id int, title text, keyword text, abstract text,
body text, ti tsvector);
gbase=#INSERT INTO tsearch.tt(id, title, keyword, abstract, body) VALUES (1,
'China', 'Beijing', 'China','China, officially the People''s Republic of China
(PRC), located in Asia, is the world''s most populous state.');
gbase=#UPDATE tsearch.tt SET ti = setweight(to_tsvector(coalesce(title,'')), 'A')
|| setweight(to_tsvector(coalesce(keyword,'')), 'B') ||
setweight(to_tsvector(coalesce(abstract,'')), 'C') ||
setweight(to_tsvector(coalesce(body,'')), 'D'); gbase=#DROP TABLE tsearch.tt;
上例使用setweight 标记已完成的tsvector 中的每个词的来源,并且使用tsvector 连接操
作符||合并标记过的tsvector 值,16.8.4.1 处理tsvector 一节详细介绍了这些操作。

1.
如果是初次使用,在PRIMARY:192.168.5.100节点执行,并确认不报错:
[gbasedbt@PRIMARY ~]$ oninit -ivwy
其中的-i选项表示初始化磁盘空间并使数据库服务器进入联机方式,-w选项表示在返
回至shell提示符并返回代码0之前迫使服务器等待直到成功初始化为止。
2.
如果同城灾备集群部分已初始化实例,则在PRIMARY:192.168.5.100节点执行,并确
认不报错:
[gbasedbt@PRIMARY ~]$ oninit -vwy
3.
启动数据库服务后使用onmode命令把HAC1节点加入到主服务器,即在PRIMARY:

透明网关参数配置文件在conf/dataSource/dblink_name.properties,具
体参数说明如下:
配置项
是否必填
注释
默认值
conf.properties
透明网关系统参数配置
gbase.gt.port

定义监听服务的
绑定端口
9898
gbase.gt.encode

定义交互信息的
编码格式,
避免出
现乱码;
utf-8
gbase.gt.pagesize

透明网关从目标
库获取数据时,
Jdbc 查询一次性
拉取的结果集条
3000

GBase 8a MPP Cluster 透明网关手册
南大通用数据技术股份有限公司
- 3 -
配置项
是否必填
注释
默认值

gbase.gt.load.data.type

加载数据的方式,
批量方式为1 ,
insert values 方
式为0
0
gbase.gt.table.use.decimal

在整型值长度超
过19 位时是否使
用decimal 类型
1
gbase.gt.gc.paging.query

源数据库为
gcluster 时,
是否
使用分页查询,0
为不分页,1 为分

0
gbase.gt.wait.timeout

连接超时等待时
长(秒)
7200
gbase.gt.thread.pool.type

线程池类型
(0-固
定线程池大小,
1-
动态线程池大小)
0
gbase.gt.thread.pool.size

固定线程池大小
1000
gbase.gt.core.pool.size

动态线程池,
核心
线程池大小
200
gbase.gt.maximum.pool.size

动态线程池,
最大
线程池
5000
gbase.gt.keep.alive.time

动态线程池,
线程
池中空闲线程等
待工作的超时时

0
gbase.gt.queue.size

动态线程池,
线程
池队列大小
10