
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
基于zhparser的PostgreSQL中文全文搜索Docker镜像,用于实现PostgreSQL数据库的中文分词与全文检索功能。本镜像从https://github.com/chen-xin/docker_zhparser fork而来,并已升级至新版本。
| 标签 | Dockerfile链接 |
|---|---|
| latest | https://github.com/abcfy2/docker_zhparser/blob/main/Dockerfile.debian |
| 17 | https://github.com/abcfy2/docker_zhparser/blob/main/Dockerfile.debian |
| 16 | https://github.com/abcfy2/docker_zhparser/blob/main/Dockerfile.debian |
| 15 | https://github.com/abcfy2/docker_zhparser/blob/main/Dockerfile.debian |
| 14 | https://github.com/abcfy2/docker_zhparser/blob/main/Dockerfile.debian |
| 13 | https://github.com/abcfy2/docker_zhparser/blob/main/Dockerfile.debian |
| alpine | https://github.com/abcfy2/docker_zhparser/blob/main/Dockerfile.alpine |
| 17-alpine | https://github.com/abcfy2/docker_zhparser/blob/main/Dockerfile.alpine |
| 16-alpine | https://github.com/abcfy2/docker_zhparser/blob/main/Dockerfile.alpine |
| 15-alpine | https://github.com/abcfy2/docker_zhparser/blob/main/Dockerfile.alpine |
| 14-alpine | https://github.com/abcfy2/docker_zhparser/blob/main/Dockerfile.alpine |
| 13-alpine | https://github.com/abcfy2/docker_zhparser/blob/main/Dockerfile.alpine |
注:标签中的数字对应PostgreSQL官方镜像版本。
适用于需要在PostgreSQL中实现中文全文检索的场景,如:
参考PostgreSQL官方镜像文档,基础运行命令如下:
bashdocker run -p 5432:5432 abcfy2/zhparser
容器首次启动时,需在默认数据库中执行以下SQL脚本配置zhparser。对于新创建的数据库,需手动执行相同脚本:
sql-- 创建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支持的所有分词类型
1. 分词调试(ts_debug)
sqlselect ts_debug('chinese_zh', '白垩纪是地球上海陆分布和生物界急剧变化、火山活动频繁的时代');
输出示例:
txtts_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)
2. 文本向量转换(to_tsvector)
sqlselect to_tsvector('chinese_zh', '白垩纪是地球上海陆分布和生物界急剧变化、火山活动频繁的时代');
输出示例:
txtto_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;
3. 查询匹配(to_tsquery & @@)
sql-- 判断"地球"是否在文本中 select to_tsquery('chinese_zh', '地球') @@ to_tsvector('chinese_zh', '白垩纪是地球上海陆分布和生物界急剧变化、火山活动频繁的时代');
输出示例:
txt?column? ---------- t (1 row)
创建表与索引
sql-- 创建测试表 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));
执行查询
sql-- 搜索包含"白垩纪"的记录 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索引将显著提升查询性能。
1. TXT格式词典
/usr/share/postgresql/<version>/tsearch_data/,文件名可自定义,如mydict.utf8.txt):txt# 格式:word TF IDF ATTR(TF/IDF为权重,ATTR为分词类型) 艾泽拉斯 1 1 n 卡利姆多 1 1 n 达纳苏斯 1 1 n 遗忘海岸 1 1 n
postgresql.conf,添加词典路径:confzhparser.extra_dicts = 'mydict.utf8.txt'
sqlselect ts_debug('chinese_zh', '艾泽拉斯');
输出示例:
txt(n,noun,艾泽拉斯,{simple},simple,{艾泽拉斯})
2. XDB格式词典(推荐)
XDB格式为二进制词典,性能优于TXT格式,步骤如下:
bash# 进入词典目录 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
bashsed -i 's/mydict\.utf8\.txt/mydict.utf8.xdb/' /var/lib/postgresql/data/postgresql.conf
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。






来自真实用户的反馈,见证轩辕镜像的优质服务