AnalyticDB for PostgreSQLでは、pg_jieba拡張機能を使用して中国語の単語セグメンテーションを実行し、効率的な中国語の全文検索を実装できます。
概要
Jiebaは、中国語の単語セグメンテーションに一般的に使用されるツールです。 pg_jieba拡張機能は、Jiebaの中国語の単語セグメンテーション機能をPostgreSQLデータベースに導入し、効率的な中国語の全文検索の実装を支援します。 AnalyticDB for PostgreSQLでは、分散クエリにpg_jieba拡張機能を使用できます。
前提条件
pg_jieba拡張機能を使用する前に、次の要件が満たされていることを確認してください。
管理するAnalyticDB for PostgreSQLインスタンスは、エラスティックストレージモードになっています。
AnalyticDB for PostgreSQL V6.0インスタンスのマイナーバージョンは6.6.2.1以降です。 AnalyticDB for PostgreSQL V7.0インスタンスのマイナーバージョンは7.0.5以降です。
説明AnalyticDB For PostgreSQLインスタンスのマイナーバージョンを表示する方法については、「マイナーエンジンバージョンの表示」をご参照ください。
pg_jieba拡張機能のインストール
Jiebaを使用する前に、AnalyticDB for PostgreSQLインスタンスのExtensionsページにpg_jieba拡張機能をインストールします。 詳細については、「拡張機能のインストール、更新、およびアンインストール」をご参照ください。
指定されたデータベースのパブリックスキーマに切り替え、次のステートメントを実行してpg_jieba拡張機能がインストールされているかどうかを確認します。
SELECT * FROM pg_extension WHERE extname = 'pg_jieba';
次の結果が返されると、pg_jieba拡張がインストールされます。 次の結果が返されない場合、指定されたデータベースのパブリックスキーマにpg_jieba拡張子はインストールされません。
+--------+--------+--------+--------+ |oid |extname |extowner|... | +--------+--------+--------+--------+ |17194 |pg_jieba|10. |... | +--------+--------+--------+--------+
中国語の単語分割
pg_jieba拡張子をインストールした後、拡張子を使用して中国語の単語セグメンテーションを実行できます。
例 1:
SELECT to_tsvector('jiebacfg', '有两种方法进行全文检索');
次の応答が返されます。
+---------------------------------------+
| to_tsvector |
+---------------------------------------+
|'两种':2 '全文检索':5 '方法':3 '进行':4 |
+---------------------------------------+
(1 row)
例 2:
SELECT to_tsvector('jiebacfg', '有两种方法进行全文检索') @@ to_tsquery('jiebacfg', '全文检索');
+----------+
| ?column? |
+----------+
| t |
+----------+
(1 row)
カスタム辞書
pg_jieba拡張機能は、AnalyticDB for PostgreSQLのカスタム辞書をサポートします。 jieba.jieba_custom_word
という名前のカスタム辞書テーブルにデータを追加または削除して、カスタム単語を追加または削除できます。
辞書テーブルを手動で作成する必要はありません。 pg_jieba拡張子がインストールされると、
jieba.jieba_custom_word
というカスタム辞書テーブルが自動的に作成されます。jieba.jieba_custom_word
テーブルのデータ構造は次のとおりです。CREATE TABLE jieba.jieba_custom_word ( word text primary key, -- Custom word weight float8 default '1.0', -- Weight type text default 'x' -- Part of speech );
カスタム辞書テーブルを使用する権限を申請する
チケットを起票し、jieba.jieba_custom_wordテーブルの使用権限を申請します。 次に、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;
カスタム辞書テーブルの読み込み
jieba.jieba_custom_wordテーブルに単語を追加または削除した後、テーブルをリロードして変更を有効にする必要があります。 次のステートメントを実行して、jieba.jieba_custom_wordテーブルをリロードします。
SELECT jieba.jieba_load_user_dict();
中国語の単語セグメンテーション効果を確認する
中国語の単語セグメンテーション効果を確認するために、jieba.jieba_custom_wordテーブルを設定する前後に、次のサンプルステートメントを実行します。
SELECT to_tsvector('jiebacfg', '有两种方法进行全文检索');
次の応答が返されます。
シナリオ | jieba.jieba_custom_wordテーブルを設定する前 | jieba.jieba_custom_wordテーブルの設定後 |
中国語の単語セグメンテーション効果 |
|
|
関連ドキュメント
フルテキスト検索の詳細については、 フルテキスト検索。
フルテキスト検索に使用できる関数と演算子については、 テキスト検索関数と演算子