Arrays POSTGRES:Levenshtein距离与bigint数组

Arrays POSTGRES:Levenshtein距离与bigint数组,arrays,postgresql,levenshtein-distance,Arrays,Postgresql,Levenshtein Distance,我知道Postgres有一个levenshtein距离函数,你可以调用字符串。我的问题是,我需要在一个bigint数组上调用它,我不知道如何做,或者是否可能 以这张表为例: asn | as_path 1 | {123, 4567, 8910} 2 | {123, 234, 456, 8910} 有没有办法得到第一行和第二行的as_路径之间的levenshtein距离,将每个bigint视为一个不能拆分的整体单元 如果有帮助的话,这些数组的大小永远不会超过15(超过90%的时间是4或更

我知道Postgres有一个levenshtein距离函数,你可以调用字符串。我的问题是,我需要在一个bigint数组上调用它,我不知道如何做,或者是否可能

以这张表为例:

asn | as_path
1   | {123, 4567, 8910}
2   | {123, 234, 456, 8910}
有没有办法得到第一行和第二行的as_路径之间的levenshtein距离,将每个bigint视为一个不能拆分的整体单元

如果有帮助的话,这些数组的大小永远不会超过15(超过90%的时间是4或更少),并且我们预先知道as_path列中存在的每个数字(其中大约有80k)

编辑:
我假设理论上,如果知道数组长度永远不会超过15,那么每次比较都可以在表中进行查找,将每个数字映射为一个字母。我只是想知道是否有更有效的方法来实现这一点。

我假设默认实现比我能想到的任何东西都要快,所以我不想实现我自己的。我想我已经找到了解决办法。我们事先知道只有80k个数字,我们也事先知道这些数字

  • 创建任意给定as_路径中每个可能数字到id为1、2…80k的映射
  • 每次执行levenshtein比较时,对于每个数字,查找给定的数字映射,并从id值调用chr(id)。这将把数字转换为unicode字符
  • 将所有unicode字符连接在一起
  • 如果您事先不知道所有的数字,这将不起作用,如果您的数字多于unicode字符,这也不起作用


    我现在不能发布这方面的代码,我必须稍后再发布。

    最好自己实现算法。