本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

基于zhparser的PostgreSQL中文全文搜索Docker镜像,用于实现PostgreSQL数据库的中文分词与全文检索功能。本镜像从chen-xin/docker_zhparser fork而来,并已升级至新版本。
| 标签 | Dockerfile链接 |
|---|---|
| latest | Dockerfile.debian |
| 17 | Dockerfile.debian |
| 16 | Dockerfile.debian |
| 15 | Dockerfile.debian |
| 14 | Dockerfile.debian |
| 13 | Dockerfile.debian |
| alpine | Dockerfile.alpine |
| 17-alpine | Dockerfile.alpine |
| 16-alpine | Dockerfile.alpine |
| 15-alpine | Dockerfile.alpine |
| 14-alpine | Dockerfile.alpine |
| 13-alpine | Dockerfile.alpine |
注:标签中的数字对应PostgreSQL官方镜像版本。
适用于需要在PostgreSQL中实现中文全文检索的场景,如:
参考PostgreSQL官方镜像文档,基础运行命令如下:
docker run -p 5432:5432 abcfy2/zhparser
容器首次启动时,需在默认数据库中执行以下SQL脚本配置zhparser。对于新创建的数据库,需手动执行相同脚本:
-- 创建zhparser扩展 CREATE EXTENSION zhparser; -- 创建文本搜索配置(名称可自定义,如"chinese_zh") CREATE TEXT SEARCH CONFIGURATION chinese_zh (PARSER = zhparser); -- 添加分词类型映射(n:名词, v:动词, a:形容词等) ALTER TEXT SEARCH CONFIGURATION chinese_zh ADD MAPPING FOR n,v,a,i,e,l WITH simple;
配置说明:
- "chinese_zh"为自定义配置名称,可按需修改
- "n,v,a,i,e,l"为分词类型,未映射的类型将不参与文档分词。使用
\dFp+ zhparser可查看zhparser支持的所有分词类型
select ts_debug('chinese_zh', '白垩纪是地球上海陆分布和生物界急剧变化、火山活动频繁的时代');
输出示例:
ts_debug ------------------------------------------- (t,time,白垩纪,{},,) (v,verb,是,{simple},simple,{是}) (n,noun,地球,{simple},simple,{地球}) (n,noun,上海,{simple},simple,{上海}) (m,numeral,陆,{},,) (v,verb,分布,{simple},simple,{分布}) (c,conjunction,和,{},,) (n,noun,生物界,{simple},simple,{生物界}) (d,adverb,急剧,{},,) (v,verb,变化,{simple},simple,{变化}) (u,auxiliary,、,{},,) (n,noun,火山,{simple},simple,{火山}) (v,verb,活动,{simple},simple,{活动}) (a,adjective,频繁,{simple},simple,{频繁}) (u,auxiliary,的,{},,) (n,noun,时代,{simple},simple,{时代}) (16 rows)
select to_tsvector('chinese_zh', '白垩纪是地球上海陆分布和生物界急剧变化、火山活动频繁的时代');
输出示例:
to_tsvector -------------------------------------------------------------------------------------------- '上海':3 '分布':4 '变化':6 '地球':2 '时代':10 '是':1 '活动':8 '火山':7 '生物界':5 '频繁':9 (1 row)
注:若需包含"白垩纪",需添加
t类型映射:ALTER TEXT SEARCH CONFIGURATION chinese_zh ADD MAPPING FOR t WITH simple;
-- 判断"地球"是否在文本中 select to_tsquery('chinese_zh', '地球') @@ to_tsvector('chinese_zh', '白垩纪是地球上海陆分布和生物界急剧变化、火山活动频繁的时代');
输出示例:
?column? ---------- t (1 row)
-- 创建测试表 create table testing( title text ); -- 插入测试数据 insert into testing values('白垩纪是地球上海陆分布和生物界急剧变化、火山活动频繁的时代'); insert into testing values('艾泽拉斯包括卡利姆多、东部王国两大大陆,暗夜精灵主城达纳苏斯位于东部王国北端。'); -- 创建GIN索引(基于中文全文搜索配置) create index ind_testing on testing using gin (to_tsvector('chinese_zh', title));
-- 搜索包含"白垩纪"的记录 select * from testing where to_tsquery('chinese_zh', '白垩纪') @@ to_tsvector('chinese_zh', title); -- 搜索包含"达纳苏斯"的记录 select * from testing where to_tsquery('chinese_zh', '达纳苏斯') @@ to_tsvector('chinese_zh', title);
注:若表数据量较少,PostgreSQL可能选择顺序扫描而非索引扫描。当数据量达到数万级时,GIN索引将显著提升查询性能。
/usr/share/postgresql/<version>/tsearch_data/,文件名可自定义,如mydict.utf8.txt):# 格式:word TF IDF ATTR(TF/IDF为权重,ATTR为分词类型) 艾泽拉斯 1 1 n 卡利姆多 1 1 n 达纳苏斯 1 1 n 遗忘海岸 1 1 n
postgresql.conf,添加词典路径:zhparser.extra_dicts = 'mydict.utf8.txt'
select ts_debug('chinese_zh', '艾泽拉斯');
输出示例:
(n,noun,艾泽拉斯,{simple},simple,{艾泽拉斯})
XDB格式为二进制词典,性能优于TXT格式,步骤如下:
# 进入词典目录 cd /usr/share/postgresql/<version>/tsearch_data/ # 生成XDB词典(需确保scws-gen-dict工具可用) ldconfig # 解决可能的库依赖问题 scws-gen-dict -c UTF8 mydict.utf8.txt mydict.utf8.xdb # 修改文件权限(确保postgres用户可访问) chown postgres:postgres mydict.utf8.xdb
sed -i 's/mydict\.utf8\.txt/mydict.utf8.xdb/' /var/lib/postgresql/data/postgresql.conf
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429