全文检索需要安装scws、zhparser插件,推荐源码安装postgresql避免依赖缺失问题
yum方式安装参考
如果已存在yum安装的postgresql,提供以下卸载方式
# 停止postgresql,此处为注册了服务的停止方式,12版本
systemctl stop postgresql-12
# 卸载 包含postgresql名的程序包
yum remove postgresql*
# 删除postgres用户及其对应的用户目录(/home/postgres)
userdel -r postgres
# 检查是否存在 /usr/psqlXXX文件夹,有的话删除,例如
rm -rf /usr/pgsql-12
创建用户及用户组
这里创建postgres用户是因为启动postgresql仅允许非root用户进行
# 创建postgres用户组
groupadd postgres
# 创建postgres用户,用户位于postgres组内
useradd -g postgres postgres
依赖安装
yum install gcc
yum install readline-devel.x86_64
yum install zlib-devel.x86_64
切换到postgres
用户
su - postgres
回到用户目录
cd ~
下载postgresql12源码包
wget -c https://ftp.postgresql.org/pub/source/v12.6/postgresql-12.6.tar.gz
解压到当前目录
tar -zxvf postgresql-12.6.tar.gz
配置及安装
# 新建PostgreSQL安装路径下的文件夹(/home/postgres/postgresql)
mkdir postgresql
# 进入解压后的源码文件夹(/home/postgres/postgresql-12.1)
cd postgresql-12.6
# 检查、并配置(--prefix=/home/postgres/postgresql 为配置postgreSQL的安装路径)
./configure --prefix=/home/postgres/postgresql
# 编译及安装
make && make install
环境变量配置
vim ~/.bash_profile
#postgresql安装目录
PGHOME=/home/postgres/postgresql
#postgresql数据存储目录
PGDATA=/home/postgres/PGDATA
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PGHOME/bin
export PATH
重载.bash_profile
source ~/.bash_profile
postgresql
数据库初始化
# /home/postgres/PGDATA为postgres数据文件的存放路径
initdb -D /home/postgres/PGDATA
启动
# /home/postgres/PGDATA为数据文件存放路径,里面也有一些配置文件
pg_ctl -D /home/postgres/PGDATA -l logfile start
#配置postgresql数据存储路径环境变量后用以下简化命令代替
pg_ctl start
停止
pg_ctl -D /home/postgres/PGDATA -l logfile stop
#配置postgresql数据存储路径环境变量后用以下简化命令代替
pg_ctl stop
重启
pg_ctl -D /home/postgres/PGDATA -l logfile restart
#配置postgresql数据存储路径环境变量后用以下简化命令代替
pg_ctl restart
查看状态
pg_ctl -D /home/postgres/PGDATA -l logfile status
#配置postgresql数据存储路径环境变量后用以下简化命令代替
pg_ctl status
postgresql
的 gin
索引。分词功能 postgresql
L 内置了英文、西班牙文等,但中文分词需要借助开源插件 zhparser
要使用
zhparser
,首先需要安装SCWS
分词库,SCWS
是 Simple Chinese Word Segmentation 的首字母缩写(即:简易中文分词系统)GitHub
前置条件
bzip2
yum -y install bzip2
gcc
编译器
yum -y install gcc
wget
yum -y install wget
取得 scws 源码并解压
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
zhparser是PostgreSQL的中文分词插件,安装后可以使PostgreSQL支持中文的全文检索 GitHub
前置条件
git
yum -y install git
下载zhparser源码
git clone https://github.com/amutu/zhparser.git
编译和安装zhparser
make && make install
至此postgresql
中文检索插件安装完毕
登录postgresql
启用zhparser
插件
CREATE EXTENSION zhparser;
创建使用zhparser
作为解析器的全文搜索的配置
-- 就是需要给zhparser解析器取一个在sql里面可以使用的名称,一下“zh”则为名称
CREATE TEXT SEARCH CONFIGURATION zh (PARSER = zhparser);
添加token映射
ALTER TEXT SEARCH CONFIGURATION zh ADD MAPPING FOR n,v,a,i,e,l WITH simple;
create index idx_name on table_name using gin(to_tsvector('zh', field_name));
SELECT * FROM table_name WHERE to_tsvector('zh', field_name) @@ 'keyword';