1、安装pg数据库
* 建议使用docker环境
* 注意不要使用太低版本的postgres数据库,比如9.5,个人反复安装都没有成功
docker pull postgres:13.5
docker run -it --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=123456 -d docker.io/postgres:13.5
2、进入pg数据库docker容器内,安装各种扩展
先执行 apt-get update ;否则无法连接外网;然后你要装啥都可以了。具体命令如下:
apt-get update
apt-get install gcc
apt-get install wget
apt-get install make
apt-get install git
apt-get install bzip2
apt install postgresql-server-dev-13
cd /tmp/
wget http://www.xunsearch.com/scws/down/scws-1.2.2.tar.bz2
tar -jxvf scws-1.2.2.tar.bz2
cd scws-1.2.2
./configure
make
make install
cd ..
git clone https://github.com/amutu/zhparser.git
cd zhparser/
make
make install
3、命令行进入数据库
su postgres
psql
CREATE EXTENSION zhparser;
CREATE TEXT SEARCH CONFIGURATION chinese (PARSER = zhparser);
ALTER TEXT SEARCH CONFIGURATION chinese ADD MAPPING FOR n,v,a,i,e,l WITH simple;
SELECT to_tsvector('chinese','“今年保障房新开工数量虽然有所下调,但实际的年度在建规模以及竣工规模会超以往年份,相对应的对资金的需求也会创历>史纪录。”陈国强说。在他看来,与2011年相比,2012年的保障房建设在资金配套上的压力将更为严峻。') as result;
'2011':27 '2012':29 '上':35 '下调':7 '严峻':37 '会':14 '会创':20 '保障':1,30 '压力':36 '史':21 '国强':24 '在建':10 '实际':8 '对应':17 '年份':16 '年度':9 '开工':4 '房':2 '房建':31 '数量':5 '新':3 '有所':6 '相比':28 '看来':26 '竣工':12 '纪录':22 '规模':11,13 '设在':32 '说':25 '资金':18,33 '超':15 '配套':34 '陈':23 '需求':19
SELECT to_tsquery('chinese', '保障房资金压力');
'保障' & '房' & '资金' & '压力'
4、结合业务场景,创建需要的索引
创建gin索引
create index idx_gin_tbl_xxxx on tbl_xxxx using gin(to_tsvector('chinese',name));
使用索引进行查询
select a,b,c from tbl_xxxx where to_tsvector('chinese',name) @@ to_tsquery('chinese','中文中文');
5、其他(参考过的文档)
https://github.com/amutu/zhparser
https://github.com/hightman/scws
Postgres中文分词 - 盆栽Charming - 博客园
centos7 postgresql13 安装 zhparser,配置中文全文检索