すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:pg_jieba拡張子を使用する

最終更新日:Nov 12, 2024

このトピックでは、pg_jieba拡張機能を使用して、ApsaraDB RDS for PostgreSQLインスタンスで中国語のフルテキスト検索を実行する方法について説明します。

前提条件

  • RDSインスタンスはPostgreSQL 10 .. 0以降のバージョンを実行します。

    説明

    この拡張機能は、PostgreSQL 17を実行するApsaraDB RDS for PostgreSQLインスタンスではサポートされていません。

  • RDSインスタンスのメジャーエンジンバージョンが要件を満たしているが、拡張機能がまだサポートされていない場合、RDSインスタンスのマイナーエンジンバージョンが更新されます。 詳細については、「マイナーエンジンバージョンの更新」をご参照ください。

  • pg_jiebaは、RDSインスタンスのshared_preload_librariesパラメーターの値に追加されます。

    shared_preload_librariesパラメーターの値にpg_jiebaを追加する方法の詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのパラメーターの変更」をご参照ください。

pg_jieba拡張を使用する方法

  • pg_jieba拡張子を作成します。

    CREATE EXTENSION pg_jieba;
    説明

    特権アカウントのみが上記のコマンドの実行を許可されます。

  • 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拡張機能を使用すると、複数のカスタム辞書を設定し、辞書を切り替えることができます。

    -- Insert data into the first custom dictionary. By default, data is inserted into the first custom dictionary. The first custom dictionary is represented by 0. The weight value of the first custom dictionary is 10.
    INSERT INTO jieba_user_dict VALUES ('阿里云');
    
    INSERT INTO jieba_user_dict VALUES ('研发工程师',0,10);
    
    
    -- Use the dictionary predefined in the pg_jieba extension to segment Chinese text.
    SELECT * FROM to_tsvector('jiebacfg', 'zth是阿里云的一个研发工程师');
    to_tsvector
    ------------------------------------------------------
    'zth':1 '一个':6 '云':4 '工程师':8 '研发':7 '阿里':3
    (1 row)
    
    -- Switch to the first custom dictionary. The jieba_load_user_dict() parameter specifies the sequence number of the custom dictionary.
    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)
  • pg_jieba拡張機能を使用すると、オフセットに基づいてテキストセグメンテーション結果を表示できます。

    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'zth:0':1 ' One: 8':6 ' Cloud: 6':4 ' Engineer: 12':8 ' Yes: 3':2':7':5 ' R&D: 10':7 ' Ali: 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
      
      -- The first 0 indicates the sequence number of the custom dictionary, and the second 0 indicates that the default dictionary is loaded.
      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() 関数が存在しない場合、RDSインスタンスのマイナーエンジンバージョンを更新して、拡張機能を20220730して再インストールする必要があります。

      1. マイナーエンジンバージョンの更新方法の詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのマイナーエンジンバージョンの更新」をご参照ください。

      2. 次のステートメントを実行して、拡張機能を再インストールします。

        DROP EXTENSION pg_jieba;
        CREATE EXTENSION pg_jieba;

関連ドキュメント

pg_jieba拡張機能の使用方法の詳細については、「pg_jieba公式ドキュメント」をご参照ください。