做业务过程中,难免会遇到全文模糊查询的问题。使用“like”或者正则等方式可以解决问题,但是效率偏慢。对于大批量数据的全文模糊查询,可以使用postgre的record_to_text()函数解决。而此函数需要安装pg_trgm extension。
对于高版本的数据库(使用9.16进行测试),可以直接使用创建extension。但是对于低版本的数据库,需要手动安装插件进行配置。这里贴上官方文档(有版本兼容性的描述):pg_trgm官方介绍
安装过程:
使用的postgres版本:PostgreSQL 9.4.25 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit
直接执行如下SQL:
create extension pg_trgm;
结果不能成功执行,报错信息:
Error: could not open extension control file "/usr/pgsql-9.4/share/extension/pg_trgm.control": No such file or directory
原因是原先安装的PostgreSQL并没有安装postgresql-contrib模块。
安装postgresql94-contrib模块:
首先登陆数据库服务器,并且需要有和安装数据库的账号等同或者更高的权限。
OS:Linux lx-db-server 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
PostgreSQL版本:PostgreSQL 9.4.25 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit
由于本数据库版本为9.4,所以执行如下命令。不同版本需要注意安装对应版本的模块。
[root@xxxx-server ~]# yum install postgresql94-contrib
P.S. 如果数据库服务器不能登陆(例如使用第三方平台的RDS等),或者服务器不能连接外网,则不能使用该方法。
执行结果:
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
base | 3.6 kB 00:00:00
epel | 5.3 kB 00:00:00
extras | 2.9 kB 00:00:00
mysql-connectors-community | 2.5 kB 00:00:00
mysql-tools-community | 2.5 kB 00:00:00
mysql57-community | 2.5 kB 00:00:00
pgdg10 | 3.6 kB 00:00:00
pgdg94 | 3.6 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/12): epel/x86_64/group_gz | 90 kB 00:00:00
(2/12): base/7/x86_64/group_gz | 165 kB 00:00:00
(3/12): extras/7/x86_64/primary_db | 153 kB 00:00:00
(4/12): epel/x86_64/updateinfo | 1.0 MB 00:00:00
(5/12): base/7/x86_64/primary_db | 6.0 MB 00:00:00
(6/12): epel/x86_64/primary_db | 6.9 MB 00:00:00
(7/12): mysql-connectors-community/x86_64/primary_db | 49 kB 00:00:00
(8/12): mysql-tools-community/x86_64