smlar
概览
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 1850 | smlar | 否 | 是 | 否 | 是 | 否 | 是 | - |
fix pg18 break issue by https://github.com/Vonng/smlar, no valid license, distribution suspend
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.0 | 1817161514 | smlar | - |
| RPM | PIGSTY | 1.0 | 1817161514 | smlar_$v | - |
| DEB | PIGSTY | 1.0 | 1817161514 | postgresql-$v-smlar | - |
| OS / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PIGSTY 1.0 el8.x86_64.pg18 : smlar_18 smlar_18-1.0-2PGSTY.el8.x86_64.rpm
| PIGSTY 1.0 el8.x86_64.pg17 : smlar_17 smlar_17-1.0-2PGSTY.el8.x86_64.rpm
| PIGSTY 1.0 el8.x86_64.pg16 : smlar_16 smlar_16-1.0-2PGSTY.el8.x86_64.rpm
| PIGSTY 1.0 el8.x86_64.pg15 : smlar_15 smlar_15-1.0-2PGSTY.el8.x86_64.rpm
| PIGSTY 1.0 el8.x86_64.pg14 : smlar_14 smlar_14-1.0-2PGSTY.el8.x86_64.rpm
|
| el8.aarch64 | PIGSTY 1.0 el8.aarch64.pg18 : smlar_18 smlar_18-1.0-2PGSTY.el8.aarch64.rpm
| PIGSTY 1.0 el8.aarch64.pg17 : smlar_17 smlar_17-1.0-2PGSTY.el8.aarch64.rpm
| PIGSTY 1.0 el8.aarch64.pg16 : smlar_16 smlar_16-1.0-2PGSTY.el8.aarch64.rpm
| PIGSTY 1.0 el8.aarch64.pg15 : smlar_15 smlar_15-1.0-2PGSTY.el8.aarch64.rpm
| PIGSTY 1.0 el8.aarch64.pg14 : smlar_14 smlar_14-1.0-2PGSTY.el8.aarch64.rpm
|
| el9.x86_64 | PIGSTY 1.0 el9.x86_64.pg18 : smlar_18 smlar_18-1.0-2PGSTY.el9.x86_64.rpm
| PIGSTY 1.0 el9.x86_64.pg17 : smlar_17 smlar_17-1.0-2PGSTY.el9.x86_64.rpm
| PIGSTY 1.0 el9.x86_64.pg16 : smlar_16 smlar_16-1.0-2PGSTY.el9.x86_64.rpm
| PIGSTY 1.0 el9.x86_64.pg15 : smlar_15 smlar_15-1.0-2PGSTY.el9.x86_64.rpm
| PIGSTY 1.0 el9.x86_64.pg14 : smlar_14 smlar_14-1.0-2PGSTY.el9.x86_64.rpm
|
| el9.aarch64 | PIGSTY 1.0 el9.aarch64.pg18 : smlar_18 smlar_18-1.0-2PGSTY.el9.aarch64.rpm
| PIGSTY 1.0 el9.aarch64.pg17 : smlar_17 smlar_17-1.0-2PGSTY.el9.aarch64.rpm
| PIGSTY 1.0 el9.aarch64.pg16 : smlar_16 smlar_16-1.0-2PGSTY.el9.aarch64.rpm
| PIGSTY 1.0 el9.aarch64.pg15 : smlar_15 smlar_15-1.0-2PGSTY.el9.aarch64.rpm
| PIGSTY 1.0 el9.aarch64.pg14 : smlar_14 smlar_14-1.0-2PGSTY.el9.aarch64.rpm
|
| el10.x86_64 | PIGSTY 1.0 el10.x86_64.pg18 : smlar_18 smlar_18-1.0-2PGSTY.el10.x86_64.rpm
| PIGSTY 1.0 el10.x86_64.pg17 : smlar_17 smlar_17-1.0-2PGSTY.el10.x86_64.rpm
| PIGSTY 1.0 el10.x86_64.pg16 : smlar_16 smlar_16-1.0-2PGSTY.el10.x86_64.rpm
| PIGSTY 1.0 el10.x86_64.pg15 : smlar_15 smlar_15-1.0-2PGSTY.el10.x86_64.rpm
| PIGSTY 1.0 el10.x86_64.pg14 : smlar_14 smlar_14-1.0-2PGSTY.el10.x86_64.rpm
|
| el10.aarch64 | PIGSTY 1.0 el10.aarch64.pg18 : smlar_18 smlar_18-1.0-2PGSTY.el10.aarch64.rpm
| PIGSTY 1.0 el10.aarch64.pg17 : smlar_17 smlar_17-1.0-2PGSTY.el10.aarch64.rpm
| PIGSTY 1.0 el10.aarch64.pg16 : smlar_16 smlar_16-1.0-2PGSTY.el10.aarch64.rpm
| PIGSTY 1.0 el10.aarch64.pg15 : smlar_15 smlar_15-1.0-2PGSTY.el10.aarch64.rpm
| PIGSTY 1.0 el10.aarch64.pg14 : smlar_14 smlar_14-1.0-2PGSTY.el10.aarch64.rpm
|
| d12.x86_64 | PIGSTY 1.0 d12.x86_64.pg18 : postgresql-18-smlar postgresql-18-smlar_1.0-2PGSTY~bookworm_amd64.deb
| PIGSTY 1.0 d12.x86_64.pg17 : postgresql-17-smlar postgresql-17-smlar_1.0-2PGSTY~bookworm_amd64.deb
| PIGSTY 1.0 d12.x86_64.pg16 : postgresql-16-smlar postgresql-16-smlar_1.0-2PGSTY~bookworm_amd64.deb
| PIGSTY 1.0 d12.x86_64.pg15 : postgresql-15-smlar postgresql-15-smlar_1.0-2PGSTY~bookworm_amd64.deb
| PIGSTY 1.0 d12.x86_64.pg14 : postgresql-14-smlar postgresql-14-smlar_1.0-2PGSTY~bookworm_amd64.deb
|
| d12.aarch64 | PIGSTY 1.0 d12.aarch64.pg18 : postgresql-18-smlar postgresql-18-smlar_1.0-2PGSTY~bookworm_arm64.deb
| PIGSTY 1.0 d12.aarch64.pg17 : postgresql-17-smlar postgresql-17-smlar_1.0-2PGSTY~bookworm_arm64.deb
| PIGSTY 1.0 d12.aarch64.pg16 : postgresql-16-smlar postgresql-16-smlar_1.0-2PGSTY~bookworm_arm64.deb
| PIGSTY 1.0 d12.aarch64.pg15 : postgresql-15-smlar postgresql-15-smlar_1.0-2PGSTY~bookworm_arm64.deb
| PIGSTY 1.0 d12.aarch64.pg14 : postgresql-14-smlar postgresql-14-smlar_1.0-2PGSTY~bookworm_arm64.deb
|
| d13.x86_64 | PIGSTY 1.0 d13.x86_64.pg18 : postgresql-18-smlar postgresql-18-smlar_1.0-2PGSTY~trixie_amd64.deb
| PIGSTY 1.0 d13.x86_64.pg17 : postgresql-17-smlar postgresql-17-smlar_1.0-2PGSTY~trixie_amd64.deb
| PIGSTY 1.0 d13.x86_64.pg16 : postgresql-16-smlar postgresql-16-smlar_1.0-2PGSTY~trixie_amd64.deb
| PIGSTY 1.0 d13.x86_64.pg15 : postgresql-15-smlar postgresql-15-smlar_1.0-2PGSTY~trixie_amd64.deb
| PIGSTY 1.0 d13.x86_64.pg14 : postgresql-14-smlar postgresql-14-smlar_1.0-2PGSTY~trixie_amd64.deb
|
| d13.aarch64 | PIGSTY 1.0 d13.aarch64.pg18 : postgresql-18-smlar postgresql-18-smlar_1.0-2PGSTY~trixie_arm64.deb
| PIGSTY 1.0 d13.aarch64.pg17 : postgresql-17-smlar postgresql-17-smlar_1.0-2PGSTY~trixie_arm64.deb
| PIGSTY 1.0 d13.aarch64.pg16 : postgresql-16-smlar postgresql-16-smlar_1.0-2PGSTY~trixie_arm64.deb
| PIGSTY 1.0 d13.aarch64.pg15 : postgresql-15-smlar postgresql-15-smlar_1.0-2PGSTY~trixie_arm64.deb
| PIGSTY 1.0 d13.aarch64.pg14 : postgresql-14-smlar postgresql-14-smlar_1.0-2PGSTY~trixie_arm64.deb
|
| u22.x86_64 | PIGSTY 1.0 u22.x86_64.pg18 : postgresql-18-smlar postgresql-18-smlar_1.0-2PGSTY~jammy_amd64.deb
| PIGSTY 1.0 u22.x86_64.pg17 : postgresql-17-smlar postgresql-17-smlar_1.0-2PGSTY~jammy_amd64.deb
| PIGSTY 1.0 u22.x86_64.pg16 : postgresql-16-smlar postgresql-16-smlar_1.0-2PGSTY~jammy_amd64.deb
| PIGSTY 1.0 u22.x86_64.pg15 : postgresql-15-smlar postgresql-15-smlar_1.0-2PGSTY~jammy_amd64.deb
| PIGSTY 1.0 u22.x86_64.pg14 : postgresql-14-smlar postgresql-14-smlar_1.0-2PGSTY~jammy_amd64.deb
|
| u22.aarch64 | PIGSTY 1.0 u22.aarch64.pg18 : postgresql-18-smlar postgresql-18-smlar_1.0-2PGSTY~jammy_arm64.deb
| PIGSTY 1.0 u22.aarch64.pg17 : postgresql-17-smlar postgresql-17-smlar_1.0-2PGSTY~jammy_arm64.deb
| PIGSTY 1.0 u22.aarch64.pg16 : postgresql-16-smlar postgresql-16-smlar_1.0-2PGSTY~jammy_arm64.deb
| PIGSTY 1.0 u22.aarch64.pg15 : postgresql-15-smlar postgresql-15-smlar_1.0-2PGSTY~jammy_arm64.deb
| PIGSTY 1.0 u22.aarch64.pg14 : postgresql-14-smlar postgresql-14-smlar_1.0-2PGSTY~jammy_arm64.deb
|
| u24.x86_64 | PIGSTY 1.0 u24.x86_64.pg18 : postgresql-18-smlar postgresql-18-smlar_1.0-2PGSTY~noble_amd64.deb
| PIGSTY 1.0 u24.x86_64.pg17 : postgresql-17-smlar postgresql-17-smlar_1.0-2PGSTY~noble_amd64.deb
| PIGSTY 1.0 u24.x86_64.pg16 : postgresql-16-smlar postgresql-16-smlar_1.0-2PGSTY~noble_amd64.deb
| PIGSTY 1.0 u24.x86_64.pg15 : postgresql-15-smlar postgresql-15-smlar_1.0-2PGSTY~noble_amd64.deb
| PIGSTY 1.0 u24.x86_64.pg14 : postgresql-14-smlar postgresql-14-smlar_1.0-2PGSTY~noble_amd64.deb
|
| u24.aarch64 | PIGSTY 1.0 u24.aarch64.pg18 : postgresql-18-smlar postgresql-18-smlar_1.0-2PGSTY~noble_arm64.deb
| PIGSTY 1.0 u24.aarch64.pg17 : postgresql-17-smlar postgresql-17-smlar_1.0-2PGSTY~noble_arm64.deb
| PIGSTY 1.0 u24.aarch64.pg16 : postgresql-16-smlar postgresql-16-smlar_1.0-2PGSTY~noble_arm64.deb
| PIGSTY 1.0 u24.aarch64.pg15 : postgresql-15-smlar postgresql-15-smlar_1.0-2PGSTY~noble_arm64.deb
| PIGSTY 1.0 u24.aarch64.pg14 : postgresql-14-smlar postgresql-14-smlar_1.0-2PGSTY~noble_arm64.deb
|
| u26.x86_64 | PIGSTY 1.0 u26.x86_64.pg18 : postgresql-18-smlar postgresql-18-smlar_1.0-2PGSTY~resolute_amd64.deb
| PIGSTY 1.0 u26.x86_64.pg17 : postgresql-17-smlar postgresql-17-smlar_1.0-2PGSTY~resolute_amd64.deb
| PIGSTY 1.0 u26.x86_64.pg16 : postgresql-16-smlar postgresql-16-smlar_1.0-2PGSTY~resolute_amd64.deb
| PIGSTY 1.0 u26.x86_64.pg15 : postgresql-15-smlar postgresql-15-smlar_1.0-2PGSTY~resolute_amd64.deb
| PIGSTY 1.0 u26.x86_64.pg14 : postgresql-14-smlar postgresql-14-smlar_1.0-2PGSTY~resolute_amd64.deb
|
| u26.aarch64 | PIGSTY 1.0 u26.aarch64.pg18 : postgresql-18-smlar postgresql-18-smlar_1.0-2PGSTY~resolute_arm64.deb
| PIGSTY 1.0 u26.aarch64.pg17 : postgresql-17-smlar postgresql-17-smlar_1.0-2PGSTY~resolute_arm64.deb
| PIGSTY 1.0 u26.aarch64.pg16 : postgresql-16-smlar postgresql-16-smlar_1.0-2PGSTY~resolute_arm64.deb
| PIGSTY 1.0 u26.aarch64.pg15 : postgresql-15-smlar postgresql-15-smlar_1.0-2PGSTY~resolute_arm64.deb
| PIGSTY 1.0 u26.aarch64.pg14 : postgresql-14-smlar postgresql-14-smlar_1.0-2PGSTY~resolute_arm64.deb
|
构建
您可以使用 pig build 命令构建 smlar 扩展的 RPM / DEB 包:
安装
您可以直接安装 smlar 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
使用 pig 或者是 apt/yum/dnf 安装扩展:
创建扩展:
用法
smlar 扩展提供 PostgreSQL 数组上的高效相似度搜索,支持可配置的相似度公式、GiST 和 GIN 索引,以及 TF/IDF 加权。
函数
计算两个数组的相似度。数组应为相同类型。
计算两个复合类型数组的相似度。复合类型格式如下:
useIntersect 选项指定分母中仅使用交集元素。
通过给定公式计算两个数组的相似度。公式中的预定义变量:
N.i– 两个数组中的公共元素数量(交集)N.a– 第一个数组中的唯一元素数量N.b– 第二个数组中的唯一元素数量
示例:
如果数组的相似度大于阈值限制则返回 true。
将 tsvector 类型转换为文本数组。
排序并去重数组。
如果第二个参数不存在于第一个参数中返回零,否则返回 1.0。
如果第二个参数不存在于第一个参数中返回第四个参数,否则返回第三个参数。
GUC 配置变量
相似度低于阈值的数组不被 % 运算视为相似。
全局统计缓存存储在事务无关的内存中。
相似度公式类型:cosine(默认)、tfidf、overlap。
存储集合级统计数据的表名。表应定义为:
值为 null 的行表示文档总数。仅用于 smlar.type = 'tfidf'。
词频计算方法。取值:
"n"– 简单计数(默认)"log"– 1 + log(n)"const"– TF 等于 1
仅用于 smlar.type = 'tfidf'。
如果为 false(默认),idf 计算为 log(d/df)。如果为 true,计算为 log(1+d/df)。仅用于 smlar.type = 'tfidf'。
强烈建议在 postgresql.conf 中添加:
GiST/GIN 索引支持
% 和 && 操作支持多种数组类型的 GiST 和 GIN 索引:
| 数组类型 | GIN 操作符类 | GiST 操作符类 |
|---|---|---|
bit[] | _bit_sml_ops | |
bytea[] | _bytea_sml_ops | _bytea_sml_ops |
char[] | _char_sml_ops | _char_sml_ops |
cidr[] | _cidr_sml_ops | _cidr_sml_ops |
date[] | _date_sml_ops | _date_sml_ops |
float4[] | _float4_sml_ops | _float4_sml_ops |
float8[] | _float8_sml_ops | _float8_sml_ops |
inet[] | _inet_sml_ops | _inet_sml_ops |
int2[] | _int2_sml_ops | _int2_sml_ops |
int4[] | _int4_sml_ops | _int4_sml_ops |
int8[] | _int8_sml_ops | _int8_sml_ops |
interval[] | _interval_sml_ops | _interval_sml_ops |
macaddr[] | _macaddr_sml_ops | _macaddr_sml_ops |
money[] | _money_sml_ops | |
numeric[] | _numeric_sml_ops | _numeric_sml_ops |
oid[] | _oid_sml_ops | _oid_sml_ops |
text[] | _text_sml_ops | _text_sml_ops |
time[] | _time_sml_ops | _time_sml_ops |
timestamp[] | _timestamp_sml_ops | _timestamp_sml_ops |
timestamptz[] | _timestamptz_sml_ops | _timestamptz_sml_ops |
timetz[] | _timetz_sml_ops | _timetz_sml_ops |
varbit[] | _varbit_sml_ops | |
varchar[] | _varchar_sml_ops | _varchar_sml_ops |