全部產品
Search
文件中心

PolarDB:zhparser(中文分詞)

更新時間:Nov 16, 2024

本文為您介紹PolarDB PostgreSQL版如何啟用中文分詞以及自訂中文分詞詞典。

啟用中文分詞

可以使用下面的命令,啟用中文分詞:

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;
--可選的參數設定
ALTER role ALL SET zhparser.multi_short=on;
--簡單測試
SELECT * FROM ts_parse('zhparser', 'hello world! 2010年保障房建設在全國範圍內獲全面啟動,從中央到地方紛紛加大 了 保 障 房 的 建 設 和 投 入 力 度 。2011年,保障房進入了更大規模的建設階段。房屋城鄉建設部黨組書記、部長薑偉新去年底在全國房屋城鄉建設工作會議上表示,要繼續推進保障性安居工程建設。');
SELECT to_tsvector('testzhcfg','“今年保障房新開工數量雖然有所下調,但實際的年度在建規模以及竣工規模會超以往年份,相對應的對資金的需求也會創歷史紀錄。”陳國強說。在他看來,與2011年相比,2012年的保障房建設在資金配套上的壓力將更為嚴峻。');
SELECT to_tsquery('testzhcfg', '保障房資金壓力');

利用分詞進行全文索引的方法如下:

--為T1表的name欄位建立全文索引
CREATE index idx_t1 ON t1 USING gin (to_tsvector('zhcfg',upper(name) ));
--使用全文索引
 SELECT * FROM t1 WHERE to_tsvector('zhcfg',upper(t1.name)) @@ to_tsquery('zhcfg','(防火)') ;

自訂中文分詞詞典

自訂中文分詞詞典,樣本如下:

-- 初始的分詞結果
SELECT to_tsquery('testzhcfg', '保障房資金壓力');
-- 往自訂分詞詞典裡面插入新的分詞
INSERT INTO pg_ts_custom_word VALUES ('保障房資');
-- 使新的分詞生效
SELECT zhprs_sync_dict_xdb();
-- 退出此串連
\c
-- 重新查詢,可以得到新的分詞結果
SELECT to_tsquery('testzhcfg', '保障房資金壓力');

使用自訂分詞的注意事項如下:

  • 最多支援一百萬條自訂分詞,超出部分不做處理,必須保證分詞數量在這個範圍之內。自訂分詞與預設的分詞詞典將共同產生作用。

  • 每個詞的最大長度為128位元組,超出部分將會截取。

  • 增刪改分詞之後必須執行SELECT zhprs_sync_dict_xdb();並且重建立立串連才會生效。