GBase 8s
适配迁移
文章
GBase 8s 全文索引功能

发表于2019-12-16 23:22:007900次浏览0个评论
传统关系型数据库上,我们通常通过 LIKE 或 MATCHES 条件来搜索文本数据,往往需要进行全表扫描,性能低下。 BTS提供全文本搜索能力,可以检索一个表上的字符数据类型列(BLOB, CHAR, CLOB, LVARCHAR, NCHAR, NVARCHAR, or VARCHAR)数据
准备: 为使用BTS功能,准备如下: 1.创建一个默认的sbspace空间 2.可选项:为bts 索引创建一个单独的sbspace空间 3.可选项:创建一个临时的 sbspace空间
通过CJK分词器可以支持中文搜索能力。 对于zh_CN.GB18030-2000字符集,需要设置环境变量GL_USEGLU=1,否则无法进行中文分词。
以下测试使用的字符集为zh_CN.utf8 1, 增加处理bts的vp
onmode -p +1 bts
2, 注册bts,按提示确认注册,使用exit退出。
blademgr
register bts.3.10 btstest
注: a, bts.3.10 的版本号来源于$GBASEDBTDIR/extend/目录下具体版本号 b, btstest为需要使用bts的数据库名
3, 创建测试表,导入测试数据。
drop table if exists tclob;
create table tclob(col1 int, col2 clob);
insert into tclob values(1,filetoclob('1.txt','client'));
insert into tclob values(2,filetoclob('2.txt','client'));
insert into tclob values(3,filetoclob('3.txt','client'));
三个文本的内容为
# 1.txt
天津南大通用
# 2.txt
北京太阳宫大厦
# 3.txt
海泰发展六道6号
4, 创建全文索引
create index ix_tclob_col2 on tclob(col2 bts_clob_ops) USING bts(analyzer="cjk");
注: bts_clob_ops类,根据字段类型调整,如char使用bts_char_ops类。ckj是China Korea Japan的缩写。
5, 使用全文索引查询
select * from tclob where bts_contains(col2,'太阳宫');
结果:
col1 2
col2
北京太阳宫大厦
对于单个汉字的全文索引查询,可以使用以下方式
select * from tclob where bts_contains(col2,'?大 大?');
结果:
col1 1
col2
天津南大通用
col1 2
col2
北京太阳宫大厦
评论
登录后才可以发表评论


热门帖子
- 12023-05-09浏览数:16704
- 22019-04-26浏览数:10213
- 32020-05-11浏览数:10104
- 42023-07-04浏览数:9409
- 52023-09-25浏览数:9394