匹配模糊字符串

aes*_*sir 8 database string postgresql fuzzy matching

我需要在PostgreSQL中将两个表合并在公共变量"公司名称"上.不幸的是,许多公司名称并不完全匹配(即一个表中的MICROSOFT,另一个表中的MICROSFT).我尝试从两个列中删除常用词,例如"corporation"或"inc"或"ltd",以便尝试在两个表中标准化名称,但我无法考虑其他策略.有任何想法吗?

谢谢.

另外,如果有必要,我可以在R中这样做.

And*_*lad 7

你考虑过fuzzystrmatch模块吗?您可以使用soundex,difference,levenshtein,metaphonedmetaphone,或它们的组合.

fuzzystrmatch文档

SELECT something
FROM somewhere
WHERE levenshtein(item1, item2) < Carefully_Selected_Threshold
Run Code Online (Sandbox Code Playgroud)

例如,从MICROSOFTMICROSFT的levenshtein距离是一(1).

levenshtein(dmetaphone('MICROSOFT'), dmetaphone('MICROSFT')
Run Code Online (Sandbox Code Playgroud)

以上返回零(0).结合levenshtein和dmetaphone可以帮助你匹配许多拼写错误.