云原生数据仓库AnalyticDB PostgreSQL版支持使用pg_jieba插件对中文文本进行分词,从而实现高效的中文全文检索。
pg_jieba简介
Jieba(结巴)是目前比较流行的中文分词库之一,能够准确地识别中文语句中的单词,对中文语句进行分词。pg_jieba插件将Jieba的分词能力引入到PostgreSQL数据库中,使得PostgreSQL能够更有效地进行中文全文检索。云原生数据仓库 AnalyticDB PostgreSQL 版支持在分布式查询中使用pg_jieba插件。
前提条件
同时满足以下条件的实例支持pg_jieba插件:
实例资源类型为存储弹性模式。
引擎版本为6.0时,小版本需要为V6.6.2.1及以上;引擎版本为7.0时,小版本需要为V7.0.5及以上。
说明如何查看实例内核版本,请参见查看内核小版本。
安装pg_jieba插件
安装插件:使用Jieba中文分词库之前,您需要在云原生数据仓库 AnalyticDB PostgreSQL 版实例插件管理中安装pg_jieba插件。具体操作,请参见安装、升级与卸载插件。
检查插件是否安装成功:切换到指定数据库的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 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', '有两种方法进行全文检索');
返回结果如下。
场景 | 未配置自定义词典表 | 在词典表中添加词“两种方法” |
分词检索效果 |
|
|
相关文档
全文检索总体介绍,请参见全文检索。
全文检索函数和操作符,请参见文本检索函数和操作符。