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

相关推荐
罗政5 小时前
[附源码]超简洁个人博客网站搭建+SpringBoot+Vue前后端分离
vue.js·spring boot·后端
拾光师6 小时前
spring获取当前request
java·后端·spring
Java小白笔记8 小时前
关于使用Mybatis-Plus 自动填充功能失效问题
spring boot·后端·mybatis
JOJO___10 小时前
Spring IoC 配置类 总结
java·后端·spring·java-ee
白总Server10 小时前
MySQL在大数据场景应用
大数据·开发语言·数据库·后端·mysql·golang·php
Lingbug12 小时前
.Net日志组件之NLog的使用和配置
后端·c#·.net·.netcore
计算机学姐12 小时前
基于SpringBoot+Vue的篮球馆会员信息管理系统
java·vue.js·spring boot·后端·mysql·spring·mybatis
好兄弟给我起把狙12 小时前
[Golang] Select
开发语言·后端·golang
程序员大金12 小时前
基于SpringBoot+Vue+MySQL的智能物流管理系统
java·javascript·vue.js·spring boot·后端·mysql·mybatis
ac-er888813 小时前
在Flask中处理后台任务
后端·python·flask