このページでは、zhparser プラグインを有効にし、POLARDB for PostgreSQL の中国語の単語分割辞書をカスタマイズする方法について説明します。

zhparser プラグインの有効化

次の文を実行して、zhparser プラグインを有効にします。

CREATE EXTENSION zhparser;
CREATE TEXT SEARCH CONFIGURATION testzhcfg (PARSER = zhparser);
ALTER TEXT SEARCH CONFIGURATION testzhcfg ADD MAPPING FOR n,v,a,i,e,l WITH simple;
--Optional parameter configuration
alter role all set zhparser.multi_short=on;
--Perform a simple test
SELECT * FROM ts_parse('zhparser', 'hello world! 2010年保障房建设在全国范围内获全面启动,从中央到地方纷纷加大 了 保 障 房 的 建 设 和 投 入 力 度 。 2011年,保障房进入了更大规模的建设阶段。 住房城乡建设部党组书记、部长姜伟新去年底在全国住房城乡建设工作会议上表示,要继续推进保障性安居工程建设。') ;
SELECT to_tsvector('testzhcfg','“今年保障房新开工数量虽然有所下调,但实际的年度在建规模以及竣工规模会超以往年份,相对应的对资金的需求也会创历史纪录。” 陈国强说。 在他看来,与2011年相比,2012年的保障房建设在资金配套上的压力将更为严峻。') ;
SELECT to_tsquery('testzhcfg', '保障房资金压力');

次の文を実行して、zhparser プラグインを使用し、フルテキストインデックスを実行します。

--Create a full-text index for the name field of table T1
create index idx_t1 on t1 using gin (to_tsvector('zhcfg',upper(name) ));
--Use the full-text index
 select * from t1 where to_tsvector('zhcfg',upper(t1.name)) @@ to_tsquery('zhcfg','(防火)') ;

中国語の単語分割辞書のカスタマイズ

次の文を実行して、中国語の単語分割辞書をカスタマイズします。

-- The segmentation result
SELECT to_tsquery('testzhcfg', '保障房资金压力');
-- Insert a new word segment to the dictionary
insert into pg_ts_custom_word values ('保障房资');
-- Make the inserted word segment take effect
select zhprs_sync_dict_xdb();
-- End the connection
\c
-- Requery to obtain new segmentation results
SELECT to_tsquery('testzhcfg', '保障房资金压力');
カスタム単語セグメントの使用について
  • 最大 100 万のカスタム単語セグメントを追加できます。 単語セグメントの数が制限を超えた場合、制限外の単語セグメントは処理されません。 単語セグメントの数がこの範囲内であることを確認してください。 カスタムおよびデフォルトの単語分割辞書が同時に有効になります。
  • 各単語セグメントは、最大 128 バイトである必要があります。 128 バイト以降のセクションは切り捨てられます。
  • 単語セグメントを追加、削除、または変更した後は、 select zhprs_sync_dict_xdb(); 文を実行して接続を再確立し、操作を有効にしてください。