全部產品
Search
文件中心

AnalyticDB:pg_jieba

更新時間:Jun 19, 2024

雲原生資料倉儲AnalyticDB PostgreSQL版支援使用pg_jieba外掛程式對中文文本進行分詞,從而實現高效的中文全文檢索索引。

pg_jieba簡介

Jieba(結巴)是目前比較流行的中文分詞庫之一,能夠準確地識別中文語句中的單詞,對中文語句進行分詞。pg_jieba外掛程式將Jieba的分詞能力引入到PostgreSQL資料庫中,使得PostgreSQL能夠更有效地進行中文全文檢索索引。AnalyticDB for PostgreSQL支援在分散式查詢中使用pg_jieba外掛程式。

前提條件

同時滿足以下條件的執行個體支援pg_jieba外掛程式:

  • 執行個體資源類型為儲存彈性模式

  • 引擎版本為6.0時,小版本需要為V6.6.2.1及以上;引擎版本為7.0時,小版本需要為V7.0.5及以上

    說明

    如何查看執行個體核心版本,請參見查看核心小版本

安裝pg_jieba外掛程式

  1. 安裝外掛程式:使用Jieba中文分詞庫之前,您需要在AnalyticDB for PostgreSQL執行個體外掛程式管理中安裝pg_jieba外掛程式。具體操作,請參見安裝、升級與卸載外掛程式

  2. 檢查外掛程式是否安裝成功:切換到指定資料庫的public模式下,執行如下命令。

    SELECT * FROM pg_extension WHERE extname = 'pg_jieba';

    返回如下結果,表示pg_jieba外掛程式已成功安裝。如未返回結果,表示指定資料庫的public模式下沒有安裝pg_jieba外掛程式。

    +--------+--------+--------+--------+
    |oid     |extname |extowner|...     |
    +--------+--------+--------+--------+
    |17194   |pg_jieba|10.     |...     |
    +--------+--------+--------+--------+

中文分詞檢索

安裝外掛程式後,即可開始使用預設分詞配置進行中文分詞查詢。

樣本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)

自訂字典

AnalyticDB for PostgreSQL的pg_jieba外掛程式支援自訂字典。通過向自訂字典表jieba.jieba_custom_word寫入或刪除資料,實現添加或刪除自訂詞。

說明
  • 您無需手動建立詞典表。安裝pg_jieba外掛程式時,系統會自動建立詞典表jieba.jieba_custom_word

  • 詞典表jieba.jieba_custom_word的表結構如下:

    CREATE TABLE jieba.jieba_custom_word
    (
    	word    text primary key,     -- 自訂詞
    	weight  float8 default '1.0', -- 權重
    	type    text   default 'x'    -- 詞性
    );

申請許可權

提交工單,在工單中申請自訂字典的使用許可權。完成申請後,您可以向自訂字典中添加詞、刪除詞和查詢詞,並使用自訂字典進行分詞檢索。

添加自訂詞

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', '有兩種方法進行全文檢索索引');

返回結果如下。

情境

未配置自訂字典表

在詞典表中添加詞“兩種方法”

分詞檢索效果

+---------------------------------------+
|               to_tsvector             |  
+---------------------------------------+
|'兩種':2 '全文檢索索引':5 '方法':3 '進行':4   |
+---------------------------------------+
(1 row)
+---------------------------------------+
|               to_tsvector             |  
+---------------------------------------+
| '兩種方法':2 '全文檢索索引':4 '進行':3       |
+---------------------------------------+
(1 row)

相關文檔