我试图在Postgres中使用相似性函数进行一些模糊的文本匹配,但是,每当我尝试使用它时,都会出现错误:

function similarity(character varying, unknown) does not exist

如果在文本上添加显式强制转换,则会出现错误:
function similarity(text, text) does not exist

我的查询是:
SELECT (similarity("table"."field"::text, %s::text)) AS "similarity", "table".* FROM "table" WHERE similarity > .5 ORDER BY "similarity" DESC LIMIT 10

我需要做些什么来初始化pg_trgm吗?

最佳答案

您必须安装pg_trgm。在debian中,获取此sql:/usr/share/postgresql/8.4/contrib/pg_trgm.sql。在命令行中:

psql -f /usr/share/postgresql/8.4/contrib/pg_trgm.sql

或在psql shell中:
\i /usr/share/postgresql/8.4/contrib/pg_trgm.sql

该脚本默认为在公共(public)架构中安装,如果要在其他地方安装该脚本,请在顶部编辑搜索路径(这样,只需删除架构即可完成卸载/升级)。

10-05 19:01