
如果你使用 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数据库的中文全文检索功能。zhparser基于Xunsearch的SCWS(Simple Chinese Word Segmentation)分词引擎,是PostgreSQL中文全文检索的常用解决方案,支持自定义词典和分词配置。
注:标签中的数字对应PostgreSQL官方镜像版本。
参考PostgreSQL官方镜像文档,基本运行命令如下:
bashdocker run -p 5432:5432 chenxinaz/zhparser
容器首次启动时,默认数据库会自动执行以下配置脚本。对于新创建的数据库,需手动执行:
sql-- 创建zhparser扩展 CREATE EXTENSION zhparser; -- 创建中文文本搜索配置 CREATE TEXT SEARCH CONFIGURATION chinese_zh (PARSER = zhparser); -- 添加分词类型映射(n:名词, v:动词, a:形容词, i:成语, e:叹词, l:习语) 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,t"等为分词类型,未映射的类型不会参与文本分词
- 使用
\dFp+ zhparser可查看zhparser支持的所有分词类型
ts_debug测试
sqlselect 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)
to_tsvector测试
sqlselect to_tsvector('chinese_zh', '白垩纪是地球上海陆分布和生物界急剧变化、火山活动频繁的时代');
返回结果:
to_tsvector -------------------------------------------------------------------------------------------- '上海':3 '分布':4 '变化':6 '地球':2 '时代':10 '是':1 '活动':8 '火山':7 '生物界':5 '频繁':9 (1 row)
注:"白垩纪"未出现在结果中,需添加
t类型映射:sqlALTER TEXT SEARCH CONFIGURATION chinese_zh ADD MAPPING FOR t WITH simple;
查询测试
sql-- to_tsquery与plainto_tsquery对比 select to_tsquery('chinese_zh', '白垩纪是地球上海陆分布和生物界急剧变化、火山活动频繁的时代'); select plainto_tsquery('chinese_zh', '白垩纪是地球上海陆分布和生物界急剧变化、火山活动频繁的时代');
返回结果:
to_tsquery ----------------------------------------------------------------------------------------- '是' & '地球' & '上海' & '分布' & '生物界' & '变化' & '火山' & '活动' & '频繁' & '时代' (1 row)
创建测试表及索引
sqlcreate 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可能选择全表扫描而非索引扫描,数据量达到一定规模(如10万行以上)时会自动使用索引。
创建词典文件/usr/share/postgresql/9.6/tsearch_data/mydict.utf8.txt,内容格式:
# word TF IDF ATTR(TF/IDF/ATTR可省略) 艾泽拉斯 1 1 n 卡利姆多 1 1 n 泰达希尔 1 1 n 达纳苏斯 1 1 n 遗忘海岸 1 1 n
修改PostgreSQL配置文件/var/lib/postgresql/data/postgresql.conf,添加:
zhparser.extra_dicts = 'mydict.utf8.txt'
重启PostgreSQL服务使配置生效
XDB格式词典性能优于TXT格式,创建步骤:
从TXT词典生成XDB文件:
bashcd /usr/share/postgresql/9.6/tsearch_data ldconfig # 解决可能的库依赖问题 scws-gen-dict -c UTF8 mydict.utf8.txt mydict.utf8.xdb chown postgres:postgres mydict.utf8.xdb # 设置正确权限
更新配置文件:
bashsed -i 's/mydict\.utf8\.txt/mydict.utf8.xdb/' /var/lib/postgresql/data/postgresql.conf
重启PostgreSQL服务
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。






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