缺少模糊字符串匹配扩展 pgadmin
Posted
技术标签:
【中文标题】缺少模糊字符串匹配扩展 pgadmin【英文标题】:Missing fuzzystringmatch extension pg admin 【发布时间】:2017-11-15 08:49:45 【问题描述】:我最近在 java 的以下输出中遇到了问题,hibernate 尝试执行查询。
Caused by: org.postgresql.util.PSQLException: ERRORE: la funzione levenshtein_less_equal(text, character varying, integer) non esiste
Suggerimento: Nessuna funzione trovata con nome e tipi di argomenti forniti. Potrebbe essere necessario convertire i tipi esplicitamente.
Posizione: 464
对不起,意大利日志的错误,基本上说函数不存在这种参数。我检查了我在数据库上的函数,我有一个名为:
levenshtein_less_equal(text, text, integer)
现在,首先我不明白为什么 java 上的 query.setparameter
用字符串设置函数的第一个和第二个参数会以这样的函数调用结束
levenshtein_less_equal(text, character varying, integer)
两者都是字符串,但一个映射到文本,一个映射到字符变化??
其次,我不明白为什么我通过向数据库扩展添加 fuzzystrmatch 扩展来解决这个问题。
【问题讨论】:
【参考方案1】:levenshtein_less_equal(text, text, integer)
是 postgres 中比较两个字符串的函数,它是 Fuzzymatch 模块的一部分,其中包含获取字符串之间距离的函数,请参阅:fuzzystrmatch,比较字符串的一种方法称为 Levenshtein distance .
当您在 Hibernate 中执行setParameter()
时,您会间接触发字符串比较,我看不到您的数据,但我认为您的数据有特殊字符,这里是讨论相同问题的堆栈溢出问题的链接:@ 987654323@.
所以这里基本上发生的是 Postgres 试图获得它不理解的字符串的近似值以获得匹配,并且它使用 Levenshtein 距离来做到这一点。
【讨论】:
感谢它帮助找到解决方案的答案。基本上,最让我困惑的是我有一个用这些参数定义的函数,但系统没有设法得到它。我刚刚意识到该函数的 SQL 定义只是对我缺少的那个模块的引用。以上是关于缺少模糊字符串匹配扩展 pgadmin的主要内容,如果未能解决你的问题,请参考以下文章