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

相关推荐
uzong5 小时前
技术故障复盘模版
后端
GetcharZp6 小时前
基于 Dify + 通义千问的多模态大模型 搭建发票识别 Agent
后端·llm·agent
桦说编程6 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
IT毕设实战小研6 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
wyiyiyi7 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
阿华的代码王国8 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Jimmy8 小时前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
AntBlack8 小时前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则
后端·python·pyqt
bobz9659 小时前
pip install 已经不再安全
后端
寻月隐君9 小时前
硬核实战:从零到一,用 Rust 和 Axum 构建高性能聊天服务后端
后端·rust·github