CentOS Stream9&Postgresql16&Zhparser 安装配置

服务器

腾讯云: CentOs Stream 9

数据库: Postgresql-16

全文检索中文插件: Zhparser

1.更新dnf

bash 复制代码
sudo dnf update -y

2.pgsql的安装命令

bash 复制代码
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql16-server
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable postgresql-16
sudo systemctl start postgresql-16

3. pgsql-devel 依赖安装

bash 复制代码
dnf --enablerepo=crb install perl-IPC-Run

4.pgsql-devel 安装

bash 复制代码
sudo dnf install -y postgresql16-devel

5.git 安装

bash 复制代码
sudo dnf install -y git

6.SCWS 安装

bash 复制代码
wget -q -O - http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2 | tar xjf -
cd scws-1.2.3 ; ./configure ; make install

7.Zhparser 安装

bash 复制代码
git clone https://github.com/amutu/zhparser.git
cd zhparser
PG_CONFIG=/usr/pgsql-16/bin/pg_config make install

注意事项

1. 为什么要配置PG_CONFIG?

因为默认读取不到pg_config,pg16生成的路径和其他版本的不一样,所以需要指定pg_config路径

2. 编译报错提示 -no-opaque-pointers 怎么办?

根据提示文件,我去修改了配置文件,删除掉无效的命令再进行运行,按照7.1进行操作

7.1 Zhparser编译报错

错误内容:
错误处理
vim打开文件
bash 复制代码
vim +230 /usr/pgsql-16/lib/pgxs/src/Makefile.global

错误行数在230行左右

修改文件,删除-no-opaque-pointers并保存,然后重新运行Zhparser 安装命令

PG_CONFIG=/usr/pgsql-16/bin/pg_config make install

原内容
bash 复制代码
BITCODE_CFLAGS =  -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Xclang -no-opaque-pointers -Wno-unused-command-line-argument -Wno-compound-token-split-by-macro -O2
BITCODE_CXXFLAGS =  -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Xclang -no-opaque-pointers -O
修改后内容
bash 复制代码
BITCODE_CFLAGS =  -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Xclang -Wno-unused-command-line-argument -Wno-compound-token-split-by-macro -O2 
BITCODE_CXXFLAGS =  -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Xclang -O2 

pgsql 外网配置

1. 修改postgresql.conf配置外网ip访问
bash 复制代码
vim +60 /var/lib/pgsql/16/data/postgresql.conf
bash 复制代码
listen_addresses = '*' # 允许所有 IP 地址连接 
port = 5432 # PostgreSQL 默认端口号
修改后的内容
2. 修改pg_hba.conf配置允许外网登录的账户
bash 复制代码
vim +110 /var/lib/pgsql/16/data/pg_hba.conf
bash 复制代码
# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             0.0.0.0/0               md5

如果正式环境,DATABASE和USER最好不要使用all,危险!
正常来说按需分配,分配的用户账户只有对应的需要的数据库权限

修改后的内容
3. 重启服务

sudo systemctl restart postgresql-16

享受你的数据库吧,已经可以外网连接了

pgsql基本命令

  • 连接pgsql
    • sudo -u postgres psql
    • 说明
      • -u [postgres] 指明是用户名,默认的超级用户是这个
  • 创建用户和密码
    • CREATE USER "你的用户名" WITH PASSWORD '你的密码';
    • 说明
      • 用户名最好用双引号,如果不使用双引号,其实你的用户名在pgsql里面是全部小写,当你用户名有大小写的时候后续使用可能会有坑
  • 修改密码
    • ALTER USER "你的用户名" WITH PASSWORD '你的新密码';
  • 为用户分配创建数据库权限
    • ALTER USER "你的用户名" CREATEDB;
  • 为用户分配超级管理员权限
    • ALTER USER "你的用户名" WITH SUPERUSER;
  • 为用户撤销超级用户权限
    • ALTER USER "你的用户名" WITH NOSUPERUSER;
  • 退出pgsql
    • exit;

pgsql 配置zhparser

  • 安装zhparser扩展
    • CREATE EXTENSION zhparser;
    • 说明:
      • 需要使用rds_superuser权限账号安装。
      • 这个安装是针对单个数据库的安装,所以使用的时候需要在对应数据库下操作
  • 创建文本搜索配置
    • CREATE TEXT SEARCH CONFIGURATION zh_cn (PARSER = zhparser);
    • 说明
      • zh_cn是命名,有可以随便命名,后续使用的时候需要传入这个命名
  • 查看zhparser词典设置
    • SELECT ts_token_type('zhparser');

查看zh_cn的配置

sql 复制代码
SELECT * FROM pg_ts_config_map 
WHERE mapcfg=(SELECT oid FROM pg_ts_config WHERE cfgname='zh_cn');
  • 说明

    • 这个是自己进行配置的,所以说词典匹配规则默认自己来的
  • 增加zh_cn测试配置

    • 添加名词(n)、动词(v)、形容词(a)、成语(i)、叹词(e)和习用语(l) 六种分词策略:
    sql 复制代码
    ALTER TEXT SEARCH CONFIGURATION zh_cn ADD MAPPING FOR n,v,a,i,e,l WITH simple;
    • 说明
      • 如果你想要添加其他分词策略,根据词典内容配置即可(这个我现在也在学习了解中)
测试分词效果
sql 复制代码
SELECT to_tsvector('zh_cn', '想要学的太多,感觉时间不够用');

zh_cn是要和搜索配置命名一致即可,如果要修改就全部都修改

效果图

pgsql 服务命令

bash 复制代码
# 停止服务
sudo systemctl stop postgresql-16
# 启动服务
sudo systemctl start postgresql-16
# 重启服务
sudo systemctl restart postgresql-16

谢谢你们的观看,我是一个默默潜水的coder,文笔不太好.如果写的有什么不好的地方、感谢你们的指出

相关推荐
AAA修煤气灶刘哥14 小时前
ES 聚合爽到飞起!从分桶到 Java 实操,再也不用翻烂文档
后端·elasticsearch·面试
爱读源码的大都督15 小时前
Java已死?别慌,看我如何用Java手写一个Qwen Code Agent,拯救Java
java·人工智能·后端
星辰大海的精灵15 小时前
SpringBoot与Quartz整合,实现订单自动取消功能
java·后端·算法
天天摸鱼的java工程师15 小时前
RestTemplate 如何优化连接池?—— 八年 Java 开发的踩坑与优化指南
java·后端
一乐小哥15 小时前
一口气同步10年豆瓣记录———豆瓣书影音同步 Notion分享 🚀
后端·python
LSTM9715 小时前
如何使用C#实现Excel和CSV互转:基于Spire.XLS for .NET的专业指南
后端
三十_15 小时前
【NestJS】构建可复用的数据存储模块 - 动态模块
前端·后端·nestjs
武子康15 小时前
大数据-91 Spark广播变量:高效共享只读数据的最佳实践 RDD+Scala编程
大数据·后端·spark
努力的小郑15 小时前
MySQL索引(二):覆盖索引、最左前缀原则与索引下推详解
后端·mysql
阿拉伦15 小时前
智能交通拥堵治理柔性设计实践复盘小结
后端