このトピックでは、中国語の全文検索に使用されるオープンソースのサードパーティ拡張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_jiebaをshared_preload_librariesパラメーターに追加する必要があります。 コンソールでshared_preload_librariesを設定できます。 詳細については、「」「クラスターパラメーターの設定」をご参照ください。 このパラメーターを設定すると、クラスターが再起動されます。 慎重に手続き。
最初のカスタム辞書にデータを挿入します。 デフォルトでは、データは最初のカスタム辞書に挿入されます。 最初のカスタム辞書は0で表されます。 最初のカスタム辞書の重み値は10です。
INSERT INTO jieba_user_dict VALUES ('阿里云'); INSERT INTO jieba_user_dict VALUES ('研发工程师',0,10);pg_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)カスタム辞書0を使用して単語を分割します。
SELECT * FROM to_tsvector('jiebacfg', 'zth是阿里云的一个研发工程师');サンプル結果:
to_tsvector -------------------------------------------- 'zth':1 '一个':5 '研发工程师':6 '阿里云':3 (1 row)