PostgreSQL 中英文混合分词特殊规则(中文单字、英文单词) - 中英分明

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
简介:

标签

PostgreSQL , 正则表达式 , 分词 , 拆分


背景

某个业务系统有一个这样的要求:

分词后,要求,英文以单词形式出现,中文(多字节字符)以单字符形式出现。

这样的需求,需要如何来实现呢?

自定义分词规则UDF

切词的一些隐含参数,请参考:

《使用阿里云PostgreSQL zhparser时不可不知的几个参数》

要出现单字,我们需要这样来设置,对于多字节字符,设置单切。

postgres=# set zhparser.multi_zall=on;  
postgres=# SELECT array_to_tsvector(array_agg(token)) from ts_debug('testzhcfg', '保障房资金压力 hello digoal')   
           where (char_length(token)=1 and octet_length(token)<>1 ) or (char_length(token)=octet_length(token));  
                  array_to_tsvector                    
-----------------------------------------------------  
 'digoal' 'hello' '保' '力' '压' '房' '资' '金' '障'  
(1 row)  

以上满足业务需求,中文按字,英文按分词。

下面我们写一个UDF,编译使用。

create or replace function udf_to_tsvector(regconfig,text) returns tsvector as $$  
  SELECT array_to_tsvector(array_agg(token)) from ts_debug($1, $2)   
    where (char_length(token)=1 and octet_length(token)<>1 ) or (char_length(token)=octet_length(token));  
$$ language sql strict immutable;  

测试,满足业务需求

postgres=# select udf_to_tsvector('testzhcfg', '保障房资金压力 hello digoal');  
                   udf_to_tsvector                     
-----------------------------------------------------  
 'digoal' 'hello' '保' '力' '压' '房' '资' '金' '障'  
(1 row)  
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
SQL 存储 自然语言处理
玩转阿里云RDS PostgreSQL数据库通过pg_jieba插件进行分词
在当今社交媒体的时代,人们通过各种平台分享自己的生活、观点和情感。然而,对于平台管理员和品牌经营者来说,了解用户的情感和意见变得至关重要。为了帮助他们更好地了解用户的情感倾向,我们可以使用PostgreSQL中的pg_jieba插件对这些发帖进行分词和情感分析,来构建一个社交媒体情感分析系统,系统将根据用户的发帖内容,自动判断其情感倾向是积极、消极还是中性,并将结果存储在数据库中。
玩转阿里云RDS PostgreSQL数据库通过pg_jieba插件进行分词
|
SQL 存储 Oracle
PostgreSQL技术大讲堂 - 第21讲:行可见性规则
从小白到专家,PostgreSQL技术大讲堂 - 第21讲:行可见性规则
271 1
|
监控 Cloud Native 关系型数据库
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版功能演示(下)——二、功能演示2:增加监控报警规则
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版功能演示(下)——二、功能演示2:增加监控报警规则
|
关系型数据库 数据挖掘 数据库
PostgreSQL 模糊查询最佳实践 - (含单字、双字、多字模糊查询方法)
PostgreSQL 模糊查询最佳实践 - (含单字、双字、多字模糊查询方法)https://github.com/digoal/blog/blob/master/201704/20170426_01.md
14076 0
|
SQL 自然语言处理 关系型数据库
PostgreSQL 如何高效解决 按任意字段分词检索的问题 - case 1
背景 在有些应用场景中,可能会涉及多个字段的匹配。 例如这样的场景,一张表包含了几个字段,分别为歌手,曲目,专辑名称,作曲,歌词, 。。。 用户可能要在所有的字段中以分词的方式匹配刘德华,任意字段匹配即返回TRUE。 传统的做法是每个字段建立分词索引,然后挨个匹配。
9057 0
|
关系型数据库 PostgreSQL
PostgreSQL tuple alignment padding (行,字段对齐) - 对齐规则,以及如何选择字段顺序
标签 PostgreSQL , 对齐 , 变长 , 行 , tuple , row , alignment , padding 背景 PostgreSQL tuple内部有ALIGN机制,因此字段顺序选择实际上也是有讲究的,选择不好,可能因为ALIGN导致占用空间放大。
1052 0
|
关系型数据库 PostgreSQL 固态存储
|
SQL 关系型数据库 数据库
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 23 章 本地化_23.2. 排序规则支持
23.2. 排序规则支持 23.2.1. 概念 23.2.2. 管理排序规则 排序规则特性允许指定每一列甚至每一个操作的数据的排序顺序和字符分类行为。这放松了数据库的LC_COLLATE和LC_CTYPE设置自创建以后就不能更改这一限制。
1182 0
|
SQL 关系型数据库 PostgreSQL
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 11 章 索引_11.10. 索引和排序规则
11.10. 索引和排序规则 一个索引在每一个索引列上只能支持一种排序规则。如果需要多种排序规则,你可能需要多个索引。 考虑这些语句: CREATE TABLE test1c ( id integer, content varchar COLLATE "x" ); CREATE INDEX test1c_content_index ON test1c (content); 该索引自动使用下层列的排序规则。
1207 0

相关产品

  • 云原生数据库 PolarDB
  • 云数据库 RDS PostgreSQL 版