RDS PostgreSQL支持pg_jieba插件,用于中文的全文搜索。

前提条件

  • RDS PostgreSQL实例版本需要满足以下条件:
    实例大版本内核小版本
    RDS PostgreSQL 10、11、12或13大于等于20211130
    RDS PostgreSQL 14大于等于20220730
    RDS PostgreSQL 15大于等于20221030
  • 使用该插件前,需要将pg_jieba加入到shared_preload_libraries参数中。

    您可以使用RDS PostgreSQL参数设置功能,为shared_preload_libraries参数添加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支持配置多个自定义词库并切换。
    -- 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号
    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)
说明 如果表jieba_user_dict或者函数jieba_load_user_dict()不存在,请升级内核小版本到20220730,并重新安装插件。
  1. 升级内核小版本:升级内核小版本
  2. 重新安装插件:
    DROP EXTENSION pg_jieba;
    CREATE EXTENSION pg_jieba;

相关参考

此插件的更多用法,请参见pg_jieba官方文档