pg_jieba 拡張は、Jieba の中国語の単語分割機能を AnalyticDB for PostgreSQL に導入し、分散データに対する効率的な中国語の全文検索を可能にします。
前提条件
開始する前に、次のことを確認してください。
AnalyticDB for PostgreSQL インスタンスが弾性ストレージモードであること
マイナーバージョンが最小要件を満たしていること:
AnalyticDB for PostgreSQL V6.0:6.6.2.1 以降
AnalyticDB for PostgreSQL V7.0:Nova BM25 の使用を推奨します。
マイナーバージョンを確認するには、マイナーエンジンバージョンの表示をご参照ください。
pg_jieba のインストール
AnalyticDB for PostgreSQL コンソールの [Extensions] ページで、pg_jieba 拡張をインストールします。詳細は、拡張機能のインストール、更新、アンインストールをご参照ください。
対象データベースの public スキーマに切り替えて、次の文を実行してインストールを確認します。
SELECT * FROM pg_extension WHERE extname = 'pg_jieba';拡張機能がインストールされている場合、次のように出力されます。
+--------+--------+--------+--------+ |oid |extname |extowner|... | +--------+--------+--------+--------+ |17194 |pg_jieba|10. |... | +--------+--------+--------+--------+行が返されない場合、拡張機能はそのデータベースの public スキーマにインストールされていません。
中国語の単語分割の実行
pg_jieba は、jiebacfg テキスト検索設定を登録します。中国語のテキストを分割するには、jiebacfg を to_tsvector または to_tsquery の最初の引数として渡します。
テキストを 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', '有两种方法进行全文检索');シナリオ | 結果 |
カスタム辞書適用前 |
|
|
|
カスタム辞書が読み込まれると、两种方法 は 两种 と 方法 に分割されず、単一のトークンとして扱われます。
次のステップ
全文検索 — PostgreSQL の全文検索リファレンス
テキスト検索関数と演算子 —
to_tsvector、to_tsquery、および関連関数のリファレンス