os: centos 7.4
db: postgresql 10.10
pg_trgm模块提供用于决定基于 trigram 匹配的字母数字文本相似度的函数和操作符,以及支持快速搜索相似字符串的索引操作符类。
pg_trgm 是 contrib 包自带的 extension 。
yum install
# yum list installed |grep -i postgresql
postgresql10.x86_64 10.10-1PGDG.rhel7 @pgdg10
postgresql10-contrib.x86_64 10.10-1PGDG.rhel7 @pgdg10
postgresql10-debuginfo.x86_64 10.10-1PGDG.rhel7 @pgdg10
postgresql10-devel.x86_64 10.10-1PGDG.rhel7 @pgdg10
postgresql10-docs.x86_64 10.10-1PGDG.rhel7 @pgdg10
postgresql10-libs.x86_64 10.10-1PGDG.rhel7 @pgdg10
postgresql10-odbc.x86_64 11.01.0000-1PGDG.rhel7 @pgdg10
postgresql10-plperl.x86_64 10.10-1PGDG.rhel7 @pgdg10
postgresql10-plpython.x86_64 10.10-1PGDG.rhel7 @pgdg10
postgresql10-pltcl.x86_64 10.10-1PGDG.rhel7 @pgdg10
postgresql10-server.x86_64 10.10-1PGDG.rhel7 @pgdg10
postgresql10-tcl.x86_64 2.4.0-1.rhel7 @pgdg10
postgresql10-tcl-debuginfo.x86_64 2.3.1-1.rhel7 @pgdg10
postgresql10-test.x86_64 10.10-1PGDG.rhel7 @pgdg10
查看安装后的extension文件
# ls -l /usr/pgsql-10/lib/*pg_trgm*
-rwxr-xr-x 1 root root 45224 Oct 27 20:11 /usr/pgsql-10/lib/pg_trgm.so
# ls -l /usr/pgsql-10/share/extension/*pg_trgm*
-rw-r--r-- 1 root root 536 Oct 27 20:11 /usr/pgsql-10/share/extension/pg_trgm--1.0--1.1.sql
-rw-r--r-- 1 root root 2192 Oct 27 20:11 /usr/pgsql-10/share/extension/pg_trgm--1.1--1.2.sql
-rw-r--r-- 1 root root 2903 Oct 27 20:11 /usr/pgsql-10/share/extension/pg_trgm--1.2--1.3.sql
-rw-r--r-- 1 root root 7975 Oct 27 20:11 /usr/pgsql-10/share/extension/pg_trgm--1.3.sql
-rw-r--r-- 1 root root 177 Oct 27 20:11 /usr/pgsql-10/share/extension/pg_trgm.control
-rw-r--r-- 1 root root 4246 Oct 27 20:11 /usr/pgsql-10/share/extension/pg_trgm--unpackaged--1.0.sql
create extension tablefunc
# su - postgres
$ psql
postgres=# select * from pg_available_extensions where name like '%pg_trgm%';
name | default_version | installed_version | comment
---------+-----------------+-------------------+-------------------------------------------------------------------
pg_trgm | 1.3 | | text similarity measurement and index searching based on trigrams
(1 row)
postgres=#
postgres=# create extension pg_trgm;
CREATE EXTENSION
postgres=# \dx
List of installed extensions
Name | Version | Schema | Description
------------+---------+------------+-------------------------------------------------------------------
pg_trgm | 1.3 | public | text similarity measurement and index searching based on trigrams
(1 rows)
postgres=# \dx+ pg_trgm
Objects in extension "pg_trgm"
Object description
--------------------------------------------------------------------------------------------------
function gin_extract_query_trgm(text,internal,smallint,internal,internal,internal,internal)
function gin_extract_value_trgm(text,internal)
function gin_trgm_consistent(internal,smallint,text,integer,internal,internal,internal,internal)
function gin_trgm_triconsistent(internal,smallint,text,integer,internal,internal,internal)
function gtrgm_compress(internal)
function gtrgm_consistent(internal,text,smallint,oid,internal)
function gtrgm_decompress(internal)
function gtrgm_distance(internal,text,smallint,oid,internal)
function gtrgm_in(cstring)
function gtrgm_out(gtrgm)
function gtrgm_penalty(internal,internal,internal)
function gtrgm_picksplit(internal,internal)
function gtrgm_same(gtrgm,gtrgm,internal)
function gtrgm_union(internal,internal)
function set_limit(real)
function show_limit()
function show_trgm(text)
function similarity_dist(text,text)
function similarity_op(text,text)
function similarity(text,text)
function word_similarity_commutator_op(text,text)
function word_similarity_dist_commutator_op(text,text)
function word_similarity_dist_op(text,text)
function word_similarity_op(text,text)
function word_similarity(text,text)
operator class gin_trgm_ops for access method gin
operator class gist_trgm_ops for access method gist
operator family gin_trgm_ops for access method gin
operator family gist_trgm_ops for access method gist
operator <<->(text,text)
operator <->>(text,text)
operator <->(text,text)
operator <%(text,text)
operator %>(text,text)
operator %(text,text)
type gtrgm
(36 rows)
详细使用,可以参考官方文档
参考:
http://postgres.cn/docs/10/pgtrgm.html