详情页标题前

阿里云RDS数据库字符串相似性判断(fuzzystrmatch)-云淘科技

详情页1

RDS PostgreSQL支持fuzzystrmatch插件,提供Soundex、Levenshtein、Metaphone和Double Metaphone四种功能,能够用来判断字符串之间的相似性和距离

插件开启与关闭

  • 开启插件。
    CREATE EXTENSION fuzzystrmatch;
  • 关闭插件。
    DROP EXTENSION fuzzystrmatch;

Soundex

Soundex功能可以将相似发音的名字转换成相同的代码并进行匹配,但是Soundex对于非英语名称效果较差。

Soundex功能提供如下函数

soundex(text) returns text
difference(text, text) returns int
  • soundex函数将一个字符串转换成它的Soundex代码(例如A550)。
  • difference函数将两个字符串转换成它们的Soundex代码并报告两个代码匹配位置的数量。由于Soundex代码具有四个字符,代码匹配位置数量的取值范围是0~4,0表示没有匹配,4表示完全匹配。

用法示例如下:

SELECT soundex('hello world!');
SELECT soundex('Anne'), soundex('Andrew'), difference('Anne', 'Andrew');
SELECT soundex('Anne'), soundex('Margaret'), difference('Anne', 'Margaret');

CREATE TABLE s (nm text);
INSERT INTO s VALUES ('john');
INSERT INTO s VALUES ('joan');
INSERT INTO s VALUES ('wobbly');
INSERT INTO s VALUES ('jack');

SELECT * FROM s WHERE soundex(nm) = soundex('john');
SELECT * FROM s WHERE difference(s.nm, 'john') > 2;

Levenshtein

Levenshtein功能可以计算两个字符串之间的编辑距离(Levenshtein距离)。

Levenshtein功能提供如下函数:

levenshtein(text source, text target, int ins_cost, int del_cost, int sub_cost) returns int
levenshtein(text source, text target) returns int
levenshtein_less_equal(text source, text target, int ins_cost, int del_cost, int sub_cost, int max_d) returns int
levenshtein_less_equal(text source, text target, int max_d) returns int

参数说明如下。

参数 说明
source 第一个字符串,任意非空字符串, 最长支持255个字符。
target 第二个字符串,任意非空字符串, 最长支持255个字符。
ins_cost 字符插入的开销。
del_cost 字符删除的开销。
sub_cost 字符替换的开销。
max_d 最大Levenshtein距离。

说明 levenshtein_less_equal函数是Levenshtein函数的加速版本,在只计算小距离时使用:

  • 如果实际的距离低于或等于max_d,levenshtein_less_equal返回精确值。
  • 如果实际的距离大于max_d,levenshtein_less_equal返回大于max_d的值。
  • 如果max_d为负值,levenshtein_less_equal函数和levenshtein函数相同。

用法示例如下:

SELECT levenshtein('GUMBO', 'GAMBOL');
SELECT levenshtein('GUMBO', 'GAMBOL', 2,1,1);
SELECT levenshtein_less_equal('extensive', 'exhaustive',2);
SELECT levenshtein_less_equal('extensive', 'exhaustive',4);

阿里云RDS数据库字符串相似性判断(fuzzystrmatch)-云淘科技

Metaphone

Metaphone功能的思想和Soundex功能相同,构建一个输入字符串的表示代码,如果两个字符串具有相同的代码则认为它们相似。

Metaphone功能提供如下函数:

metaphone(text source, int max_output_length) returns text

参数说明如下。

参数 说明
source 任意非空字符串, 最长支持255个字符。
max_output_length 设置输出的metaphone代码的最大长度,如果超长,输出会被截断到这个长度。

用法示例如下:

SELECT metaphone('GUMBO', 4);

Double Metaphone

Double Metaphone功能能够为一个输入的字符串计算出两个相似的字符串,包括一个主要函数和一个次要函数。在大部分情况下它们是相同的,但是对于非英语名称它们可能有一点不同(取决于发音)。

Double Metaphone功能提供的主要和次要函数如下:

dmetaphone(text source) returns text
dmetaphone_alt(text source) returns text

用法示例如下:

select dmetaphone('gumbo');
select dmetaphone_alt('gumbo');

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/156083.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

  • 阿里云日志服务SLS字段操作函数-云淘科技

    本文介绍字段操作函数的语法规则,包括参数解释、函数示例等。 函数列表 函数 说明 v 获得日志特定字段的值。当同时传入多个字段名时,返回日志中第一个存在的字段的值。 支持和其他函数组合使用。相关示例,请参见调用函数清洗数据。 e_set 添加新字段或为现有字段设置新的字段值。 支持和其他函数组合使用。相关示例,请参见调用函数清洗数据。 e_drop_fiel…

    阿里云日志服务SLS 2023年12月10日
  • 阿里云日志服务SLS创建资源数据-云淘科技

    资源数据主要用于配置特定告警监控规则所关联的外部数据(例如监控目标的黑白名单),您可以创建、修改和删除这些外部数据。本文介绍创建资源数据的操作。 操作步骤 登录日志服务控制台。 进入资源数据管理页面。 在Project列表区域,单击任意一个Project。 在左侧导航栏中,单击告警。 在告警中心页面,选择其它 > 资源数据。 单击创建,配置资源数据的信…

    阿里云日志服务SLS 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云日志服务SLS日期和时间函数-云淘科技

    日志服务提供时间函数、日期函数、日期和时间提取函数、时间间隔函数和时序补全函数,支持对日志中的日期和时间进行格式转换,分组聚合等处理。本文介绍日期和时间函数的基本语法及示例。 日志服务支持如下日期和时间函数。 重要 日志服务中的日志时间戳精确到秒,所以配置时间格式(format)时,只需配置到秒,无需配置毫秒、微秒等信息。 只需为时间字符串中的时间部分配置时…

    阿里云日志服务SLS 2023年12月10日
  • 阿里云云原生大数据计算服务 MaxComputeLIST FUNCTIONS-云淘科技

    查看MaxCompute项目中所有自定义函数的信息。 命令格式 list functions [-p ]; 参数说明 project_name:可选。指定MaxCompute项目的名称。 使用示例 list functions; 返回结果如下。 Name Owner Create Time Class Resources ipv4_ipv6_aton ALI…

  • 阿里云云原生大数据计算服务 MaxComputeMULTIMAP_FROM_ENTRIES-云淘科技

    返回由结构体数组中的Key和包含所有Value的数组所组成的Map。 命令格式 multimap_from_entries(array<struct>) 参数说明 array<struct>:为Key/Value组成的结构体数组。 返回值说明 返回由结构体数组中的Key和包含所有Value的数组所组成的Map,Map格式为map&lt…

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。