pg_jieba 拡張は、Jieba の中国語形態素解析機能を AnalyticDB for PostgreSQL に導入し、分散データに対する効率的な中国語の全文検索を可能にします。
前提条件
開始する前に、次のことを確認してください。
AnalyticDB for PostgreSQL インスタンスが弾性ストレージモードであること
マイナーバージョンが最小要件を満たしていること:
AnalyticDB for PostgreSQL V6.0:6.6.2.1 以降
AnalyticDB for PostgreSQL V7.0:7.0.5 以降
マイナーエンジンバージョンの確認方法については、「マイナーエンジンバージョンの表示」をご参照ください。
pg_jieba のインストール
AnalyticDB for PostgreSQL コンソールの [拡張機能] ページで、pg_jieba 拡張をインストールします。詳細については、「拡張機能のインストール、更新、アンインストール」をご参照ください。
対象データベースの public スキーマに切り替え、次の文を実行してインストールを検証します。
SELECT * FROM pg_extension WHERE extname = 'pg_jieba';拡張機能がインストールされている場合、出力は次のようになります。
+--------+--------+--------+--------+ |oid |extname |extowner|... | +--------+--------+--------+--------+ |17194 |pg_jieba|10. |... | +--------+--------+--------+--------+行が返されない場合、拡張機能はそのデータベースの public スキーマにインストールされていません。
中国語の形態素解析の実行
pg_jieba は、テキスト検索構成 jiebacfg を登録します。中国語テキストを形態素解析するには、to_tsvector または to_tsquery の最初の引数として jiebacfg を渡します。
テキストを tsvector に分割します。
SELECT to_tsvector('jiebacfg', '有两种方法进行全文检索');結果:
+---------------------------------------+
| to_tsvector |
+---------------------------------------+
|'两种':2 '全文检索':5 '方法':3 '进行':4 |
+---------------------------------------+
(1 row)全文検索クエリを実行します。
SELECT to_tsvector('jiebacfg', '有两种方法进行全文检索') @@ to_tsquery('jiebacfg', '全文检索');結果:
+----------+
| ?column? |
+----------+
| t |
+----------+
(1 row)カスタム辞書の利用
デフォルトでは、pg_jieba は組み込みの辞書を使用します。プロダクト名、専門用語、複合語などのドメイン固有の用語は、分割されずに単一のトークンとして扱われるように、カスタム辞書に追加してください。
pg_jieba をインストールすると、jieba.jieba_custom_word テーブルが次のスキーマで自動的に作成されます。
CREATE TABLE jieba.jieba_custom_word
(
word text primary key, -- カスタム単語
weight float8 default '1.0', -- 重み
type text default 'x' -- 品詞
);アクセス権限の申請
チケットを起票して、jieba.jieba_custom_word テーブルへの書き込み権限を申請してください。
カスタム単語の管理
単語を追加します。
INSERT INTO jieba.jieba_custom_word values('两种方法');単語を削除します。
DELETE FROM jieba.jieba_custom_word WHERE word='两种方法';テーブルをクエリします。
SELECT * FROM jieba.jieba_custom_word;辞書の再読み込み
単語を追加または削除した後は、変更を有効にするために辞書を再読み込みしてください。このステップを実行しないと、形態素解析の結果は変更されません。
SELECT jieba.jieba_load_user_dict();セグメンテーション結果の確認
再読み込みの前後で同じクエリを実行して、効果を確認します。
SELECT to_tsvector('jiebacfg', '有两种方法进行全文检索');| シナリオ | 結果 |
|---|---|
| カスタム辞書適用前 | '两种':2 '全文检索':5 '方法':3 '进行':4 |
两种方法 を追加して再読み込みした後 | '两种方法':2 '全文检索':4 '进行':3 |
カスタム辞書がロードされると、两种方法 は 两种 と 方法 に分割されず、単一のトークンとして扱われます。
次のステップ
全文検索 — PostgreSQL の全文検索リファレンス
テキスト検索関数と演算子 —
to_tsvector、to_tsquery、および関連関数のリファレンス