日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

字符串相似性判斷(fuzzystrmatch)

更新時(shí)間:

RDS PostgreSQL支持fuzzystrmatch插件,提供Soundex、Levenshtein、Metaphone和Double Metaphone四種功能,能夠用來判斷字符串之間的相似性和距離。

您可以加入RDS PostgreSQL插件交流釘釘群(103525002795),進(jìn)行咨詢、交流和反饋,獲取更多關(guān)于插件的信息。

插件開啟與關(guān)閉

  • 開啟插件。

    CREATE EXTENSION fuzzystrmatch;
  • 關(guān)閉插件。

    DROP EXTENSION fuzzystrmatch;

Soundex

Soundex功能可以將相似發(fā)音的名字轉(zhuǎn)換成相同的代碼并進(jìn)行匹配,但是Soundex對(duì)于非英語名稱效果較差。

Soundex功能提供如下函數(shù):

soundex(text) returns text
difference(text, text) returns int
  • soundex函數(shù)將一個(gè)字符串轉(zhuǎn)換成它的Soundex代碼(例如A550)。

  • difference函數(shù)將兩個(gè)字符串轉(zhuǎn)換成它們的Soundex代碼并報(bào)告兩個(gè)代碼匹配位置的數(shù)量。由于Soundex代碼具有四個(gè)字符,代碼匹配位置數(shù)量的取值范圍是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功能可以計(jì)算兩個(gè)字符串之間的編輯距離(Levenshtein距離)。

Levenshtein功能提供如下函數(shù):

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

參數(shù)說明如下。

參數(shù)

說明

source

第一個(gè)字符串,任意非空字符串, 最長支持255個(gè)字符。

target

第二個(gè)字符串,任意非空字符串, 最長支持255個(gè)字符。

ins_cost

字符插入的開銷。

del_cost

字符刪除的開銷。

sub_cost

字符替換的開銷。

max_d

最大Levenshtein距離。

說明

levenshtein_less_equal函數(shù)是Levenshtein函數(shù)的加速版本,在只計(jì)算小距離時(shí)使用:

  • 如果實(shí)際的距離低于或等于max_d,levenshtein_less_equal返回精確值。

  • 如果實(shí)際的距離大于max_d,levenshtein_less_equal返回大于max_d的值。

  • 如果max_d為負(fù)值,levenshtein_less_equal函數(shù)和levenshtein函數(shù)相同。

用法示例如下:

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);

Levenshtein

Metaphone

Metaphone功能的思想和Soundex功能相同,構(gòu)建一個(gè)輸入字符串的表示代碼,如果兩個(gè)字符串具有相同的代碼則認(rèn)為它們相似。

Metaphone功能提供如下函數(shù):

metaphone(text source, int max_output_length) returns text

參數(shù)說明如下。

參數(shù)

說明

source

任意非空字符串, 最長支持255個(gè)字符。

max_output_length

設(shè)置輸出的metaphone代碼的最大長度,如果超長,輸出會(huì)被截?cái)嗟竭@個(gè)長度。

用法示例如下:

SELECT metaphone('GUMBO', 4);

Double Metaphone

Double Metaphone功能能夠?yàn)橐粋€(gè)輸入的字符串計(jì)算出兩個(gè)相似的字符串,包括一個(gè)主要函數(shù)和一個(gè)次要函數(shù)。在大部分情況下它們是相同的,但是對(duì)于非英語名稱它們可能有一點(diǎn)不同(取決于發(fā)音)。

Double Metaphone功能提供的主要和次要函數(shù)如下:

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

用法示例如下:

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