You need to enable JavaScript to run this app.
文档中心
AI 原生 BaaS 平台 Supabase 版

AI 原生 BaaS 平台 Supabase 版

复制全文
下载 pdf
插件
中文分词(zhparser)
复制全文
下载 pdf
中文分词(zhparser)
PostgreSQL 自带的 parser 插件适用于分词比较简单的语言(如英语),按照标点、空格切分语句即可获得有含义的词语。而中文比较复杂,词语之间没有空格分隔,长度也不固定,分词还和语义有关,因此 parser 不能用来做中文分词,建议使用 zhparser。zhparser 是 PostgreSQL 的中文分词插件,安装后可以使 PostgreSQL 支持中文的全文检索(Full Text Search)。​
创建与删除插件​
  • 创建插件​
说明​
需使用高权限账号创建插件。​
  • ​
    CREATE EXTENSION zhparser;​
    ​
  • 删除插件​
  • ​
    DROP EXTENSION zhparser;​
    ​
使用插件​
  • 基本使用​
  • ​
    -- 查看Zhparser的词典配置​
    SELECT ts_token_type('zhparser');​
    ts_token_type ​
    ---------------------------------​
    (97,a,"adjective,形容词")​
    (98,b,"differentiation,区别词")​
    (99,c,"conjunction,连词")​
    (100,d,"adverb,副词")​
    (101,e,"exclamation,感叹词")​
    (102,f,"position,方位词")​
    (103,g,"root,词根")​
    (104,h,"head,前连接成分")​
    (105,i,"idiom,成语")​
    (106,j,"abbreviation,简称")​
    (107,k,"tail,后连接成分")​
    (108,l,"tmp,习用语")​
    (109,m,"numeral,数词")​
    (110,n,"noun,名词")​
    (111,o,"onomatopoeia,拟声词")​
    (112,p,"prepositional,介词")​
    (113,q,"quantity,量词")​
    (114,r,"pronoun,代词")​
    (115,s,"space,处所词")​
    (116,t,"time,时语素")​
    (117,u,"auxiliary,助词")​
    (118,v,"verb,动词")​
    (119,w,"punctuation,标点符号")​
    (120,x,"unknown,未知词")​
    (121,y,"modal,语气词")​
    (122,z,"status,状态词")​
    (26 rows)​
    ​
    -- 配置中文解析器​
    CREATE TEXT SEARCH CONFIGURATION testzhcfg (PARSER = zhparser);​
    ​
    -- 添加名词(n)、动词(v)、形容词(a)、成语(i)、叹词(e)和习用语(l) 六种分词策略​
    ALTER TEXT SEARCH CONFIGURATION testzhcfg ADD MAPPING FOR n,v,a,i,e,l WITH simple;​
    ​
    --测试分词效果(to_tsvector)​
    SELECT to_tsvector('testzhcfg','火山云数据库 PostgreSQL 版是一种即开即用、稳定可靠、灵活弹性、易于使用的关系型数据库服务。');​
    to_tsvector ​
    ----------------------------------------------------------------------------------------------------------------------------------------------------------​
    'postgresql':4 '云':2 '使用':16 '即':7,9 '可靠':12 '开':8 '弹性':14 '数据库':3,17 '易于':15 '是':6 '服务':18 '火山':1 '灵活':13 '版':5 '用':10 '稳定':11​
    (1 row)​
    ​
    --测试分词效果(to_tsquery)​
    SELECT to_tsquery('testzhcfg', 'RDS-for-PostgreSQL完全兼容原生PostgreSQL,提供易用的管理界面与工具,方便用户以云模式使用和管理数据库');​
    to_tsquery ​
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------​
    'rds-for-postgresql' & '完全' & '兼容' & '原生' & 'postgresql' & '提供' & '易用' & '管理' & '界面' & '工具' & '方便' & '用户' & '云' & '模式' & '使用' & '管理' & '数据库'​
    (1 row)​
    ​
  • 进阶使用——利用分词进行全文索引​
  • 以下示例是为 test 表的 introduce 字段创建全文索引,使用时将 SQL 语句中的表名(test)和字段(introduce)替换为实际业务中的表名和字段值。​
  • ​
    -- 创建测试表​
    CREATE TABLE test(introduce text);​
    INSERT INTO test VALUES ('使用RDS for PostgreSQL数据库,客户无需再关心底层硬件资源,降低使用成本,提高整体效率');​
    INSERT INTO test VALUES ('兼容多种开源的插件,用户自由化管理,不同的数据类型及索引类型支持多种应用场景');​
    INSERT INTO test VALUES ('按需开通,即开即用,灵活升降配置,与PostgreSQL原生接口一致,无需应用改造,全托管,免运维');​
    -- 创建索引​
    CREATE INDEX idx ON test USING gin (to_tsvector('testzhcfg',upper(introduce)));​
    -- 使用全文索引​
    SELECT * FROM test WHERE to_tsvector('testzhcfg',upper(test.introduce)) @@ to_tsquery('testzhcfg','(免运维)') ;​
    introduce ​
    ------------------------------------------------------------------------------------------​
    按需开通,即开即用,灵活升降配置,与PostgreSQL原生接口一致,无需应用改造,全托管,免运维​
    (1 row)​
    ​
其他​
更多信息,请参见 zhparser 官方文档。​
​
最近更新时间:2026.01.16 11:04:23
这个页面对您有帮助吗?
有用
有用
无用
无用