全部產品
Search
文件中心

ApsaraDB RDS:建立並使用pg_jieba外掛程式

更新時間:Nov 27, 2024

RDS PostgreSQL支援pg_jieba外掛程式,用於中文的全文檢索搜尋。

前提條件

  • 執行個體大版本為RDS PostgreSQL 10或以上。

  • 如執行個體大版本已滿足要求,但仍提示不支援,請升級核心小版本,具體操作,請參見升級核心小版本

  • 使用該外掛程式前,需要將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外掛程式的版本,查看對應外掛程式版本的擴充功能。

請使用如下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,並重新安裝外掛程式。

      1. 升級核心小版本:升級核心小版本

      2. 重新安裝外掛程式:

        DROP EXTENSION pg_jieba;
        CREATE EXTENSION pg_jieba;

相關參考

此外掛程式的更多用法,請參見pg_jieba官方文檔