我正在尝试使用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初始化?
使用postgresql 9.1:
安装后(在ubuntu上),sudo apt-get install postgresql-contrib
因为tomaszbak回答.
你只需要执行sql命令:
CREATE EXTENSION 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
该脚本默认安装在公共模式中,如果要将其安装在其他位置,则编辑顶部的搜索路径(以便可以通过删除模式来完成卸载/升级).
在ubuntu上你需要运行
sudo apt-get install postgresql-contrib
获取/usr/share/postgresql/8.4/contrib/pg_trgm.sql