GBase 8s
适配迁移
文章
传统关系型数据库上,我们通常通过 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
北京太阳宫大厦
评论
登录后才可以发表评论
GBase用户28017发表于 11个月前
这个输出还不错。
枫溪发表于 11个月前
感谢分享
枫溪发表于 11个月前
学习了
枫溪发表于 11个月前
记录一下
嗷呜一口仙贝发表于 11个月前
学习了
枫溪发表于 10个月前
感谢分享
崔哥发表于 9个月前
感谢分享
路路路发表于 8个月前
mark
GBase用户47954发表于 5个月前
感谢作者的精彩分享!
张仅仅发表于 5个月前
感谢分享
柒柒天晴发表于 4个月前
谢谢分享
柒柒天晴发表于 4个月前
谢谢分享
柒柒天晴发表于 4个月前
谢谢分享
柒柒天晴发表于 4个月前
谢谢分享
柒柒天晴发表于 4个月前
谢谢分享
柒柒天晴发表于 4个月前
谢谢分享
柒柒天晴发表于 4个月前
谢谢分享
山佳发表于 4个月前
谢谢分享
山佳发表于 4个月前
谢谢分享
山佳发表于 4个月前
谢谢分享
柒柒天晴发表于 4个月前
谢谢分享
山佳发表于 4个月前
谢谢分享
柒柒天晴发表于 4个月前
谢谢分享
柒柒天晴发表于 4个月前
谢谢分享
XX发表于 3个月前
感谢分享
热门帖子
- 12025-12-01浏览数:183203
- 22023-05-09浏览数:25975
- 42023-09-25浏览数:19626
- 52020-05-11浏览数:18255