pg_trgm
是一个 PostgreSQL 扩展,它提供函数和运算符来根据三元组匹配确定字母数字文本的相似性。三元组是从字符串中取出的三个连续字符的集合。 pg_trgm
扩展可用于测量两个字符串共享的三元组数量,这可用于计算它们的相似度。这对于开发人员在应用程序中实现诸如 **搜索功能** 或 **数据匹配** 等功能特别有用。
要安装 pg_trgm
扩展,您需要访问 PostgreSQL 数据库。请按照以下步骤操作
1. 连接到您的 PostgreSQL 数据库。
2. 将它加载到 postgresql.conf 中的 shared_preloaded_libraries,因为它需要额外的共享内存。如果您使用的是 Timescale,您可以简单地跳过此步骤,因为该扩展已预先加载。您可以通过转到服务概述中的 操作 > 扩展
来查找可用扩展,它还会提供安装说明。
3. 运行以下 SQL 命令
CREATE EXTENSION pg_trgm;
此命令将在您当前的数据库中安装 pg_trgm
扩展。如果您想在其他数据库中安装它,您需要先连接到该数据库。
安装 pg_trgm
扩展后,您可以使用它来比较字符串的相似性。以下是一些使用 pg_trgm
函数的示例
要计算两个字符串之间的相似度,请使用 similarity(text, text)
函数。此函数返回 0 到 1 之间的数字,其中 1 表示字符串相同,0 表示它们没有共同的三元组。
要查找表中与给定字符串相似的记录,请使用 %
运算符。例如,以下查询返回 products
表中 name
与 'apple' 相似的所有记录
SELECT * FROM products WHERE name % 'apple';
pg_trgm
扩展可以用于各种时间序列用例。例如,它可用于根据标签或元数据查找相似的时间序列数据。这在您想要在数据中查找模式或异常的情况下非常有用。
如果您使用的是 Timescale,这是一个构建在 PostgreSQL 之上的时间序列云数据库,您可以使用 pg_trgm
扩展来增强您的 时间序列数据分析。
例如,您可以使用 pg_trgm
函数根据元数据查找相似的时间序列,或根据标签搜索特定时间序列。为此,您将以本文第三部分中描述的方式使用 pg_trgm
函数,但对时间序列数据而不是其他数据进行操作。