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

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 以下配置在PG9.2及以上版本使用,这些选项是用来控制字典加载行为和分词行为的,这些选项都不是必须的,默认都为false(即如果没有在配置文件中设置这些选项,则zhparser的行为与将下面的选项设置为false一致)。 zhparser.punctuation_ignore = f zhp

阿里云RDS PgSQL已支持zhparser中文分词插件,用法举例:

create extension zhparser;

select * from pg_ts_parser ;
 prsname  | prsnamespace |  prsstart   |    prstoken     |  prsend   |  prsheadline  |  prslextype   
----------+--------------+-------------+-----------------+-----------+---------------+---------------
 default  |           11 | prsd_start  | prsd_nexttoken  | prsd_end  | prsd_headline | prsd_lextype
 zhparser |        25956 | zhprs_start | zhprs_getlexeme | zhprs_end | prsd_headline | zhprs_lextype
(2 rows)

CREATE TEXT SEARCH CONFIGURATION testzhcfg (PARSER = zhparser);
CREATE TEXT SEARCH CONFIGURATION

digoal=#           select * from pg_ts_config where cfgname='testzhcfg';
  cfgname  | cfgnamespace | cfgowner | cfgparser 
-----------+--------------+----------+-----------
 testzhcfg |        25956 |       10 |     26134
(1 row)

ALTER TEXT SEARCH CONFIGURATION testzhcfg ADD MAPPING FOR n,v,a,i,e,l WITH simple;
ALTER TEXT SEARCH CONFIGURATION
digoal=#           select * from pg_ts_config_map where mapcfg=(select oid from pg_ts_config where cfgname='testzhcfg');
 mapcfg | maptokentype | mapseqno | mapdict 
--------+--------------+----------+---------
  26135 |           97 |        1 |    3765
  26135 |          101 |        1 |    3765
  26135 |          105 |        1 |    3765
  26135 |          108 |        1 |    3765
  26135 |          110 |        1 |    3765
  26135 |          118 |        1 |    3765
(6 rows)

SELECT * FROM ts_parse('zhparser', 'hello world! 2010年保障房建设在全国范围内获全面启动,从中央到地方纷纷加大 了 保 障 房 的 建 设 
和 投 入 力 度 。2011年,保障房进入了更大规模的建设阶段。住房城乡建设部党组书记、部长姜伟新去年底在全国住房城乡建设工作会议上表示,
要继续推进保障性安居工程建设。');

SELECT to_tsvector('testzhcfg','“今年保障房新开工数量虽然有所下调,但实际的年度在建规模以及竣工规模会超以往年份,相对应的对资金的需
求也会创历史纪录。”陈国强说。在他看来,与2011年相比,2012年的保障房建设在资金配套上的压力将更为严峻。');

SELECT to_tsquery('testzhcfg', '保障房资金压力');
           to_tsquery            
---------------------------------
 '保障' & '房' & '资金' & '压力'
(1 row)

zhparser还有一些特殊的配置项,以下配置在PG9.2及以上版本使用,这些选项是用来控制字典加载行为和分词行为的,这些选项都不是必须的,默认都为false(即如果没有在配置文件中设置这些选项,则zhparser的行为与将下面的选项设置为false一致)。

zhparser.punctuation_ignore = f

zhparser.seg_with_duality = f

zhparser.dict_in_memory = f

zhparser.multi_short = f

zhparser.multi_duality = f

zhparser.multi_zmain = f

zhparser.multi_zall = f

对应的scws介绍
http://www.xunsearch.com/scws/docs.php#libscws

8. `void scws_set_ignore(scws_t s, int yes)` 设定分词结果是否忽略所有的标点等特殊符号(不会忽略\r和\n)。

   > **参数 yes** 1 表示忽略,0 表示不忽略,缺省情况为不忽略。

9. `void scws_set_multi(scws_t s, int mode)` 设定分词执行时是否执行针对长词复合切分。(例:“中国人”分为“中国”、“人”、“中国人”)。

   > **参数 mode** 复合分词法的级别,缺省不复合分词。取值由下面几个常量异或组合:
   >
   >   - SCWS_MULTI_SHORT   短词
   >   - SCWS_MULTI_DUALITY 二元(将相邻的2个单字组合成一个词)
   >   - SCWS_MULTI_ZMAIN   重要单字
   >   - SCWS_MULTI_ZALL    全部单字

10. `void scws_set_duality(scws_t s, int yes)` 设定是否将闲散文字自动以二字分词法聚合。

   > **参数 yes** 如果为 1 表示执行二分聚合,0 表示不处理,缺省为 0。  

测试multi_short如下

digoal=> select to_tsvector('zhcfg','云安全部');
 to_tsvector 
-------------
 '云安':1
(1 row)

digoal=> select to_tsvector('zhcfg','云 安全部');
        to_tsvector         
----------------------------
 '云':1 '安全':3 '安全部':2
(1 row)

digoal=> set zhparser.multi_short=off;
SET
digoal=> select to_tsvector('zhcfg','网络安全部');
     to_tsvector     
---------------------
 '安全部':2 '网络':1
(1 row)

digoal=> set zhparser.multi_short=on;
SET
digoal=> select to_tsvector('zhcfg','网络安全部');
         to_tsvector          
------------------------------
 '安全':3 '安全部':2 '网络':1
(1 row)

影响索引zhparser的设置影响to_tsvector函数索引。
建议初始 zhparser.multi_short=on 设置为on。
或者设置用户级别或者数据库级别的参数,例如。

alter role all set zhparser.multi_short=on;
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
22天前
|
关系型数据库 分布式数据库 数据库
成都晨云信息技术完成阿里云PolarDB数据库产品生态集成认证
近日,成都晨云信息技术有限责任公司(以下简称晨云信息)与阿里云PolarDB PostgreSQL版数据库产品展开产品集成认证。测试结果表明,晨云信息旗下晨云-站群管理系统(V1.0)与阿里云以下产品:开源云原生数据库PolarDB PostgreSQL版(V11),完全满足产品兼容认证要求,兼容性良好,系统运行稳定。
|
1月前
|
DataWorks Java 关系型数据库
DataWorks常见问题之将预警信息发送至邮箱
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
34 1
|
2月前
|
关系型数据库 分布式数据库 数据库
阿里云PolarDB登顶2024中国数据库流行榜:技术实力与开发者影响力
近日,阿里云旗下的自研云原生数据库PolarDB在2024年中国数据库流行度排行榜中夺冠,并刷新了榜单总分纪录,这一成就引起了技术圈的广泛关注。这一成就源于PolarDB在数据库技术上的突破与创新,以及对开发者和用户的实际需求的深入了解体会。那么本文就来分享一下关于数据库流行度排行榜的影响力以及对数据库选型的影响,讨论PolarDB登顶的关键因素,以及PolarDB“三层分离”新版本对开发者使用数据库的影响。
74 3
阿里云PolarDB登顶2024中国数据库流行榜:技术实力与开发者影响力
|
2月前
|
关系型数据库 分布式数据库 数据库
阿里云瑶池数据库训练营权益:PolarDB开发者大会主题资料开放下载!
阿里云瑶池数据库训练营权益:PolarDB开发者大会主题资料开放下载!
|
3月前
|
Cloud Native 关系型数据库 分布式数据库
|
3月前
|
弹性计算 Ubuntu Linux
【幻兽帕鲁Palworld】搭建服务器配置参数说明,附阿里云幻兽帕鲁服务器搭建教程
创建幻兽帕鲁服务器配置参数说明,Palworld服务器配置参数与解释:
607 0
|
3月前
|
运维 关系型数据库 分布式数据库
PolarDB是阿里云提供的一种关系型数据库服务
PolarDB是阿里云提供的一种关系型数据库服务【1月更文挑战第17天】【1月更文挑战第82篇】
38 1
|
1月前
|
算法 Java 开发工具
使用阿里云KMS产品针对 Springboot 接口参数加密解密功能
针对Springboot里面使用开源工具使用加解密,替换成阿里云KMS产品进行加解密;
121 1
|
1月前
|
弹性计算 缓存 数据库
阿里云服务器2核4G配置租用价格表_2核4G性能参数说明
阿里云服务器2核4G配置租用价格表_2核4G性能参数说明,2核4G配置1个月多少钱?2核4G服务器30元3个月、轻量应用服务器2核4G4M带宽165元一年、企业用户2核4G5M带宽199元一年
|
1月前
|
Cloud Native 关系型数据库 分布式数据库
热烈祝贺阿里云PolarDB登顶2024最新一期中国数据库流行榜
【2月更文挑战第3天】热烈祝贺阿里云PolarDB登顶2024最新一期中国数据库流行榜

相关产品

  • 云原生数据库 PolarDB