Docker 容器
docker run \
--name postgres \
-e POSTGRES_PASSWORD=postgres \
-e TZ=PRC \
--restart=always \
-e PGDATA=/var/lib/postgresql/data/pgdata \
-v /var/docker/postgres:/var/lib/postgresql/data \
-p 5432:5432 \
-d postgres
docker exec -it postgres bash # 进入 pg 容器
编译安装 Zhparser
以下步骤都是在 PG 容器中操作。
安装依赖:
postgresql-server-dev-17
改成对应版本,也可以在docker run
中明确指定拉取的镜像版本,以便保持统一。
apt update -y && apt install wget gcc make git bzip2 postgresql-server-dev-17 -y
编译 Zhparser:
cd /tmp
wget http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2
tar -jxvf scws-1.2.3.tar.bz2
cd scws-1.2.3
./configure && make && make install
cd ..
git clone https://github.com/amutu/zhparser.git
cd zhparser/
make && make install
验证安装。首先连接到 PG 服务器:
psql -U postgres
然后:
CREATE EXTENSION zhparser; -- 启用 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 ts_token_type('zhparser'); -- 词性列表
测试:
to_tsvector
测试:
SELECT to_tsvector('chinese','人生得意须尽欢,莫使金樽空对月。天生我材必有用,千金散尽还复来。Hello world');
结果:
to_tsvector
------------------------------------------------------------------------------------------------------------------------------
'hello':12 'world':13 '人生':1 '使':4 '千金':8 '复来':11 '天生我材必有用':7 '对月':6 '尽':10 '尽欢':3 '得意':2 '散':9 '空':5
(1 row)
to_tsquery
测试:
SELECT to_tsquery('chinese', '金风玉露一相逢,便胜却人间无数。It & works');
结果:
to_tsquery
--------------------------------------------------------------
'金风玉露' <-> '相逢' <-> '胜' <-> '人间' <-> 'it' & 'works'
(1 row)
参考:https://www.fdevops.com/2023/02/05/postgres-zhparser-31246
Top comments (0)