跳转到主要内容
vsql_trgm 是 PostgreSQL pg_trgm 的移植版本。它把字符串拆成三字符 片段,并按两个字符串共享多少片段来打分,因此拼错的搜索词仍能找到 对应的行。当 LIKE 太严格而全文搜索太粗糙时,请使用它。

安装

如果您使用安装脚本、Docker 镜像或发行版压缩包安装了 VillageSQL, vsql_trgm.veb 已经位于服务器的 lib/veb/ 目录中。 用一条语句将它安装到服务器中:
确认它已存在:
要自行构建,请按照存储库中的 构建说明进行操作。

新增内容

它添加了三类函数。普通类比较两个完整的字符串。单词类在第二个字符串 中查找匹配度最高的子串。严格单词类做同样的事,但按单词边界对齐。 每一类都有自己的默认阈值。

示例

建一个小的姓名表:
用一个没人输入过的拼写搜索它,并对结果排序:
Peter Brown 共享的三元组太少,达不到 0.3,因此始终不会出现。要查看 比较的是什么,请直接索取三元组:
填充的空格是有意为之。它们让字符串的开头和结尾也计入分数。
PostgreSQL 的 set_limit() 在这里没有对应物,因为 vsql_trgm 不保存 会话状态。请改为把您想要的阈值传给 trgm_similar_threshold()。 相似度过滤器也会读取每一行,因此在对大表运行之前请先测量。

另请参阅