Docker里面的Postgres 14.0 使用中文分词,全文搜索

#https://gitee.com/mirrors/zhparser/tree/master/

postgres文件目录 /usr/lib/postgresql/14/xxxx
#升级先
apt-get update
#安装解压缩软件
apt-get install bzip2
#安装编译工具
apt-get install make
#返回根目录
cd /
#创建一个临时文件夹 这个文件夹后面能不能删除呢?
mkdir zhparsertmp
#下载scws文件,其他版本行不行?没试过
wget http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2
#解压他
tar xvf scws-1.2.3.tar.bz2
#查看解压的文件 cd scws-1.2.3然后ls
cd scws-1.2.3

#编译安装
./configure
#下面这条应该是不要的,上面那个附带了,估计类似一个bat
#make install
#安装源代码
apt-get install postgresql-server-dev-14

#转到对应目录
cd /zhparsertmp
cd zhparser
#编译他
make && make install

#看下这里有多少文件 zhparser
cd /usr/share/postgresql/14/extension

#查找文件
find / -name "postgres.h" -print

#然后去数据库执行
CREATE EXTENSION zhparser

#测试一条试试
SELECT * FROM ts_parse('zhparser', 'hello world! 2010年保障房建设在全国范围内获全面启动,从中央到地方纷纷加大 了保障房的建设和投入力度 。2011年,保障房进入了更大规模的建设阶段。住房城乡建设部党组书记、部长姜伟新去年底在全国住房城乡建设工作会议上表示,要继续推进保障性安居工程建设。');

#添加一个自造词
insert into zhparser.zhprs_custom_word values('保障房');

#添加一个配置
CREATE TEXT SEARCH CONFIGURATION testzhcfg (PARSER = zhparser);

ALTER TEXT SEARCH CONFIGURATION testzhcfg ADD MAPPING FOR n,v,a,i,e,l WITH simple;

#全文搜索案例
https://help.aliyun.com/document_detail/217587.html
#为表的字段设定分词
create index indexservice_split on public."TableName" using gin (to_tsvector('testzhcfg',upper("ColumName") ));

#查询
select * from public."TableName" t1 where to_tsvector('testzhcfg',upper(t1."ColumName")) @@ to_tsquery('testzhcfg','(防火)') ;

#下载scws文件,其他版本行不行?没试过
wget http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2

上面流程是我亲测可用的,搜索一大堆都是说得很含糊的,这个是完整的,我是使用window 10 - docker desktop - postgresql 14.0 。

或查询

select * from public."TableName" t1 where to_tsvector('testzhcfg',upper(t1."ColumName")) @@ to_tsquery('testzhcfg','防火 | 保障房') ;

与查询

select * from public."TableName" t1 where to_tsvector('testzhcfg',upper(t1."ColumName")) @@ to_tsquery('testzhcfg','防火 & 全国') ;

从一段文本中获取关键字

SELECT * FROM ts_parse('zhparser', '在遥远的银河系有一个叫做地球的星球上面有一个国家叫中国');

SELECT to_tsquery('testzhcfg', '在遥远的银河系有一个叫做地球的星球上面有一个国家叫中国');

SELECT to_tsvector('testzhcfg', '在遥远的银河系有一个叫做地球的星球上面有一个国家叫中国');

你可能感兴趣的:(postgres,docker,中文分词,postgresql)