vsql_trgm 是 PostgreSQL pg_trgm 的移植版本。它把字符串拆成三字符
片段,并按两个字符串共享多少片段来打分,因此拼错的搜索词仍能找到
对应的行。当 LIKE 太严格而全文搜索太粗糙时,请使用它。
安装
如果您使用安装脚本、Docker 镜像或发行版压缩包安装了 VillageSQL,vsql_trgm.veb 已经位于服务器的 lib/veb/ 目录中。
用一条语句将它安装到服务器中:
新增内容
它添加了三类函数。普通类比较两个完整的字符串。单词类在第二个字符串 中查找匹配度最高的子串。严格单词类做同样的事,但按单词边界对齐。 每一类都有自己的默认阈值。示例
建一个小的姓名表:PostgreSQL 的
set_limit() 在这里没有对应物,因为 vsql_trgm 不保存
会话状态。请改为把您想要的阈值传给 trgm_similar_threshold()。
相似度过滤器也会读取每一行,因此在对大表运行之前请先测量。另请参阅
- MySQL 中的三元组相似度 — 阈值、排序,以及在大表上的代价
- 模糊字符串匹配 — 作为替代方案的语音编码和编辑距离
- 全文搜索 — 适合文档而不是姓名的工具
- 安装扩展 —
INSTALL EXTENSION如何工作,以及服务器在哪里查找包 - 可用扩展 — 完整目录
- villagesql/vsql-trgm — 源代码、构建说明和已知限制