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,文笔不太好.如果写的有什么不好的地方、感谢你们的指出

相关推荐
wowocpp1 小时前
spring boot Controller 和 RestController 的区别
java·spring boot·后端
后青春期的诗go1 小时前
基于Rust语言的Rocket框架和Sqlx库开发WebAPI项目记录(二)
开发语言·后端·rust·rocket框架
freellf1 小时前
go语言学习进阶
后端·学习·golang
全栈派森3 小时前
云存储最佳实践
后端·python·程序人生·flask
CircleMouse3 小时前
基于 RedisTemplate 的分页缓存设计
java·开发语言·后端·spring·缓存
獨枭4 小时前
使用 163 邮箱实现 Spring Boot 邮箱验证码登录
java·spring boot·后端
维基框架4 小时前
Spring Boot 封装 MinIO 工具
java·spring boot·后端
秋野酱4 小时前
基于javaweb的SpringBoot酒店管理系统设计与实现(源码+文档+部署讲解)
java·spring boot·后端
☞无能盖世♛逞何英雄☜5 小时前
Flask框架搭建
后端·python·flask
进击的雷神5 小时前
Perl语言深度考查:从文本处理到正则表达式的全面掌握
开发语言·后端·scala