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

PolarDB:pg_jieba

最終更新日:Nov 11, 2024

このトピックでは、中国語の全文検索に使用されるオープンソースのサードパーティ拡張pg_jiebaについて説明します。

前提条件

この拡張機能は、次のエンジンを実行するPolarDB for PostgreSQL (Compatible with Oracle) クラスターでサポートされています。

  • PolarDB for PostgreSQL (Oracle互換) 2.0 (バージョン2.0.14.2.0以降)

  • PolarDB for PostgreSQL (Oracle互換) 1.0 (バージョン1.1.28以降)

説明

次のステートメントを実行して、PolarDB for PostgreSQL (Compatible with Oracle) クラスターのリビジョンバージョンを表示できます。

SHOW polar_version;

概要

pg_jieba拡張機能は、次のテキスト検索モードを提供します。

  • jiebacfg: 正確なモード。 このモードは、冗長な単語なしでテキストを正確に分割します。

  • jiebaqry: フルモード。 このモードは、テキスト内のすべての一致する単語を取得します。 冗長な言葉が存在する場合があります。

  • jiebacfg_pos: 正確モード (下付き) 。 各単語の添字情報は、厳密モードの結果に追加されます。厳密モードでは無視されるストップワード (検索に使用されない高頻度の単語) も表示されます。

使用量

拡張機能の作成と削除

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

    CREATE EXTENSION pg_jieba;
  • pg_jieba拡張子を削除します。

    DROP EXTENSION pg_jieba;
説明

特権アカウントのみが上記のステートメントを実行する権限を与えられます。

  • 例 1:

    • 正確なモード

      SELECT * FROM to_tsvector('jiebacfg', '小明硕士毕业于中国科学院计算所,后在日本京都大学深造');

      サンプル結果:

                                         to_tsvector
      ----------------------------------------------------------------------------------
       '中国科学院':5 '小明':1 '日本京都大学':10 '毕业':3 '深造':11 '硕士':2 '计算所':6
      (1 row)
    • フルモード

      SELECT * FROM to_tsvector('jiebaqry', '小明硕士毕业于中国科学院计算所,后在日本京都大学深造');

      サンプル結果:

                                                                                 to_tsvector
      -----------------------------------------------------------------------------------------------------------------------------------------------------------------
       '中国':5 '中国科学院':9 '京都':16 '大学':17 '学院':7 '小明':1 '日本':15 '日本京都大学':18 '毕业':3 '深造':19 '硕士':2 '科学':6 '科学院':8 '计算':10 '计算所':11
      (1 row)
    • 正確なモード (下付きの位置)

      SELECT * FROM to_tsvector('jiebacfg_pos', '小明硕士毕业于中国科学院计算所,后在日本京都大学深造');

      サンプル結果:

                                                                     to_tsvector
      ------------------------------------------------------------------------------------------------------------------------------------------
       '中国科学院:7':5 '于:6':4 '后:16':8 '在:17':9 '小明:0':1 '日本京都大学:18':10 '毕业:4':3 '深造:24':11 '硕士:2':2 '计算所:12':6 ',:15':7
      (1 row)
  • 例 2:

    • 正確なモード

      SELECT * FROM to_tsvector('jiebacfg', '李小福是创新办主任也是云计算方面的专家');

      サンプル結果:

                                  to_tsvector
      -------------------------------------------------------------------
       '专家':11 '主任':5 '云计算':8 '创新':3 '办':4 '方面':9 '李小福':1
      (1 row)
    • フルモード

      SELECT * FROM to_tsvector('jiebaqry', '李小福是创新办主任也是云计算方面的专家');

      サンプル結果:

                                       to_tsvector
      -----------------------------------------------------------------------------
       '专家':12 '主任':5 '云计算':9 '创新':3 '办':4 '方面':10 '李小福':1 '计算':8
      (1 row)
    • 正確なモード (下付きの位置)

      SELECT * FROM to_tsvector('jiebacfg_pos', '李小福是创新办主任也是云计算方面的专家');

      サンプル結果:

                                                              to_tsvector
      ---------------------------------------------------------------------------------------------------------------------------
       '专家:17':11 '主任:7':5 '也:9':6 '云计算:11':8 '创新:4':3 '办:6':4 '方面:14':9 '是:10':7 '是:3':2 '李小福:0':1 '的:16':10
      (1 row)

拡張機能

pg_jieba拡張機能を使用すると、複数のカスタム辞書を設定し、辞書を切り替えることができます。

説明

カスタム辞書を使用するには、pg_jiebashared_preload_librariesパラメーターに追加する必要があります。 コンソールでshared_preload_librariesを設定できます。 詳細については、「」「クラスターパラメーターの設定」をご参照ください。 このパラメーターを設定すると、クラスターが再起動されます。 慎重に手続き。

  1. 最初のカスタム辞書にデータを挿入します。 デフォルトでは、データは最初のカスタム辞書に挿入されます。 最初のカスタム辞書は0で表されます。 最初のカスタム辞書の重み値は10です。

    INSERT INTO jieba_user_dict VALUES ('阿里云');
    INSERT INTO jieba_user_dict VALUES ('研发工程师',0,10);
  2. pg_jieba拡張で定義されている辞書を使用して、中国語テキストをセグメント化します。

    SELECT * FROM to_tsvector('jiebacfg', 'zth是阿里云的一个研发工程师');

    サンプル結果:

                         to_tsvector
    ------------------------------------------------------
     'zth':1 '一个':6 '云':4 '工程师':8 '研发':7 '阿里':3
    (1 row)
                        
  3. カスタム辞書0に切り替えます。

    SELECT jieba_load_user_dict(0);

    サンプル結果:

     jieba_load_user_dict
    ----------------------
    
    (1 row)
  4. カスタム辞書0を使用して単語を分割します。

    SELECT * FROM to_tsvector('jiebacfg', 'zth是阿里云的一个研发工程师');

    サンプル結果:

                    to_tsvector
    --------------------------------------------
     'zth':1 '一个':5 '研发工程师':6 '阿里云':3
    (1 row)