RDS PostgreSQL支持pg_jieba插件,用于中文的全文搜索。
前提条件
使用方法
创建插件
CREATE EXTENSION pg_jieba;
说明仅高权限账号可以执行此命令。
删除插件
DROP EXTENSION pg_jieba;
说明仅高权限账号可以执行此命令。
使用示例1:
SELECT * FROM to_tsvector('jiebacfg', '小明硕士毕业于中国科学院计算所,后在日本京都大学深造'); to_tsvector -------------------------------------------------------------------------------------------------------------- '中国科学院':5 '于':4 '后':8 '在':9 '小明':1 '日本京都大学':10 '毕业':3 '深造':11 '硕士':2 '计算所':6 ',':7 (1 row)
使用示例2:
SELECT * FROM to_tsvector('jiebacfg', '李小福是创新办主任也是云计算方面的专家'); to_tsvector ------------------------------------------------------------------------------------------- '专家':11 '主任':5 '也':6 '云计算':8 '创新':3 '办':4 '方面':9 '是':2,7 '李小福':1 '的':10 (1 row)
扩展功能
请根据您当前已安装pg_jieba插件的版本,查看对应插件版本的扩展功能。
请使用如下SQL语句查询已安装pg_jieba插件版本:
SELECT * FROM pg_available_extensions WHERE name='pg_jieba';
1.1.0扩展功能
pg_jieba支持配置多个自定义词库并切换。
-- 0号词典插入数据(默认0号词典,权重10) INSERT INTO jieba_user_dict VALUES ('阿里云'); INSERT INTO jieba_user_dict VALUES ('研发工程师',0,10); -- 使用jieba自带词库分词 SELECT * FROM to_tsvector('jiebacfg', 'zth是阿里云的一个研发工程师'); to_tsvector ------------------------------------------------------ 'zth':1 '一个':6 '云':4 '工程师':8 '研发':7 '阿里':3 (1 row) -- 切换自定义词典到0号,jieba_load_user_dict()中传入的参数为自定义词典序号 SELECT jieba_load_user_dict(0); jieba_load_user_dict ---------------------- (1 row) SELECT * FROM to_tsvector('jiebacfg', 'zth是阿里云的一个研发工程师'); to_tsvector -------------------------------------------- 'zth':1 '一个':5 '研发工程师':6 '阿里云':3 (1 row)
支持按照偏移量显示分词结果。
SELECT * FROM to_tsvector('jiebacfg_pos', 'zth是阿里云的一个研发工程师'); to_tsvector -------------------------------------------------------------------------------------- 'zth:0':1 '一个:8':6 '云:6':4 '工程师:12':8 '是:3':2 '的:7':5 '研发:10':7 '阿里:4':3 (1 row)
1.2.0扩展功能
优化
jieba_load_user_dict()
对内存和CPU的消耗。jieba_load_user_dict()
新增配置参数,用于设置检索时是否使用默认词典。语法
jieba_load_user_dict(parameter1, parameter2)
参数解释
参数
取值说明
parameter1
表示加载自定义词典的词典序号。
parameter2
表示是否加载默认词典。
0:加载默认词典
1:不加载默认词典
使用示例
INSERT INTO jieba_user_dict VALUES ('阿里云'); INSERT 0 1 INSERT INTO jieba_user_dict VALUES ('研发工程师',0,10); INSERT 0 1 -- 第一个0 代表自定义词典序号,第二个0 代表加载默认词典 SELECT jieba_load_user_dict(0,0); jieba_load_user_dict ---------------------- (1 row) SELECT * FROM to_tsvector('jiebacfg', 'zth是阿里云的一个研发工程师'); to_tsvector -------------------------------------------- 'zth':1 '一个':5 '研发工程师':6 '阿里云':3 (1 row) SELECT jieba_load_user_dict(0,1); jieba_load_user_dict ---------------------- (1 row) SELECT * FROM to_tsvector('jiebacfg', 'zth是阿里云的一个研发工程师'); to_tsvector ------------------------------------------------------ 'zth':1 '一个':6 '云':4 '工程师':8 '研发':7 '阿里':3 (1 row)
说明如果表
jieba_user_dict
或者函数jieba_load_user_dict()
不存在,请升级内核小版本到20220730,并重新安装插件。升级内核小版本:升级内核小版本。
重新安装插件:
DROP EXTENSION pg_jieba; CREATE EXTENSION pg_jieba;
相关参考
此插件的更多用法,请参见pg_jieba官方文档。