【问题标题】:Oracle String Conversion - Alpha String to Numeric Score, Fuzzy MatchOracle 字符串转换 - 字母字符串到数字分数,模糊匹配
【发布时间】:2018-04-17 05:43:12
【问题描述】:

我正在处理发生以下事件的大量名称数据:

在一个流中,数据以“Sung”形式提交,而在另一个流“Snug”中,我最初的想法是将 Sung 和 Snug 转换为每个字符等于一个数字的位置,然后总和将是相同的,所以即使如果他们横穿一个角色,我就可以适当地存储这些。

另一个是在一个流中它以“Lilly”的形式出现,而不是在另一个流中以“Lilly”出现。我想弄清楚如何模糊匹配这些以便我可以识别它们。我不确定这在 Oracle 中是否可行。

我正在处理数百万个数据点,并试图弄清楚如何编写这些分类桶,这样我就可以在我的主要任务中不再有太多噪音了错误。

任何想法将不胜感激。

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    这种距离的常用度量称为 Levenshtein 距离 (Wikipedia here)。这测量了两个字符串之间的“编辑”距离——将一个字符串转换为另一个字符串所需的编辑操作数。

    这是个好消息。更好的消息是,Oracle 甚至在 UTL_MATCH 库中实现了。

    坏消息是,它在数百万个数据点上真的非常非常昂贵。不幸的是,我无法在这方面为您提供太多帮助。一个想法是确定哪些名称“足够接近”,因为它们已经共享了某个最小数量的字符。

    另一种方法是将字符串转换为听起来的样子。这称为soundex。您可以同时使用这两者——假设您的名字主要是英文(soundex 算法是由美国人口普查局发明的,因此它最适用于美国的名字)。

    【讨论】:

    • 这是非常有趣的戈登。我很好奇这个距离是否可以在最小发现处停止,或者是否有一种简单的方法可以进行足够接近的计算?我不需要知道所有排列,而是 Frankk 有一个额外的 k 然后停止或 6 个字符中的 5 个匹配。横向将很难,因为字符串是相同的只是不同的顺序,这就是我希望做的事情像 A -1,B -2,... Z-26,字符串的总和是相等的,虽然我想将是疯狂的资源密集型。非常有趣的信息,感谢您的分享。
    • @user197240 。 . .我不知道 Oracle 有任何“部分 Levenshtein”的实现。一个可能存在,但我不知道。
    猜你喜欢
    • 1970-01-01
    • 2012-02-14
    • 2014-11-02
    • 2018-04-30
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多