RDS PostgreSQL支援pg_jieba外掛程式,用於中文的全文檢索搜尋。
前提條件
使用方法
建立外掛程式
CREATE EXTENSION pg_jieba;
說明僅高許可權帳號可以執行此命令。
刪除外掛程式
DROP EXTENSION pg_jieba;
說明僅高許可權帳號可以執行此命令。
使用樣本1:
SELECT * FROM to_tsvector('jiebacfg', '小明碩士畢業於中國科學院計算所,後在日本京都大學深造'); to_tsvector -------------------------------------------------------------------------------------------------------------- '中國科學院':5 '於':4 '後':8 '在':9 '小明':1 '日本京都大學':10 '畢業':3 '深造':11 '碩士':2 '計算所':6 ',':7 (1 row)
使用樣本2:
SELECT * FROM to_tsvector('jiebacfg', '李小福是創新辦主任也是雲端運算方面的專家'); to_tsvector ------------------------------------------------------------------------------------------- '專家':11 '主任':5 '也':6 '雲端運算':8 '創新':3 '辦':4 '方面':9 '是':2,7 '李小福':1 '的':10 (1 row)
擴充功能
請根據您當前已安裝pg_jieba外掛程式的版本,查看對應外掛程式版本的擴充功能。
請使用如下SQL語句查詢已安裝pg_jieba外掛程式版本:
SELECT * FROM pg_available_extensions WHERE name='pg_jieba';
1.1.0擴充功能
pg_jieba支援配置多個自訂詞庫並切換。
-- 0號詞典插入資料(預設0號詞典,權重10) INSERT INTO jieba_user_dict VALUES ('阿里雲'); INSERT INTO jieba_user_dict VALUES ('研發工程師',0,10); -- 使用jieba內建詞庫分詞 SELECT * FROM to_tsvector('jiebacfg', 'zth是阿里雲的一個研發工程師'); to_tsvector ------------------------------------------------------ 'zth':1 '一個':6 '雲':4 '工程師':8 '研發':7 '阿里':3 (1 row) -- 切換自訂字典到0號,jieba_load_user_dict()中傳入的參數為自訂字典序號 SELECT jieba_load_user_dict(0); jieba_load_user_dict ---------------------- (1 row) SELECT * FROM to_tsvector('jiebacfg', 'zth是阿里雲的一個研發工程師'); to_tsvector -------------------------------------------- 'zth':1 '一個':5 '研發工程師':6 '阿里雲':3 (1 row)
支援按照位移量顯示分詞結果。
SELECT * FROM to_tsvector('jiebacfg_pos', 'zth是阿里雲的一個研發工程師'); to_tsvector -------------------------------------------------------------------------------------- 'zth:0':1 '一個:8':6 '雲:6':4 '工程師:12':8 '是:3':2 '的:7':5 '研發:10':7 '阿里:4':3 (1 row)
1.2.0擴充功能
最佳化
jieba_load_user_dict()
對記憶體和CPU的消耗。jieba_load_user_dict()
新增配置參數,用於設定檢索時是否使用預設詞典。文法
jieba_load_user_dict(parameter1, parameter2)
參數解釋
參數
取值說明
parameter1
表示載入自訂字典的詞典序號。
parameter2
表示是否載入預設詞典。
0:載入預設詞典
1:不載入預設詞典
使用樣本
INSERT INTO jieba_user_dict VALUES ('阿里雲'); INSERT 0 1 INSERT INTO jieba_user_dict VALUES ('研發工程師',0,10); INSERT 0 1 -- 第一個0 代表自訂字典序號,第二個0 代表載入預設詞典 SELECT jieba_load_user_dict(0,0); jieba_load_user_dict ---------------------- (1 row) SELECT * FROM to_tsvector('jiebacfg', 'zth是阿里雲的一個研發工程師'); to_tsvector -------------------------------------------- 'zth':1 '一個':5 '研發工程師':6 '阿里雲':3 (1 row) SELECT jieba_load_user_dict(0,1); jieba_load_user_dict ---------------------- (1 row) SELECT * FROM to_tsvector('jiebacfg', 'zth是阿里雲的一個研發工程師'); to_tsvector ------------------------------------------------------ 'zth':1 '一個':6 '雲':4 '工程師':8 '研發':7 '阿里':3 (1 row)
說明如果表
jieba_user_dict
或者函數jieba_load_user_dict()
不存在,請升級核心小版本到20220730,並重新安裝外掛程式。升級核心小版本:升級核心小版本。
重新安裝外掛程式:
DROP EXTENSION pg_jieba; CREATE EXTENSION pg_jieba;
相關參考
此外掛程式的更多用法,請參見pg_jieba官方文檔。