我需要postgresql中最长的公共子序列函数。典型的安装对它不起作用。我在plpgsql上写了代码,但运行速度很慢。postgres有没有一些插件(或者别的什么)来实现这样的功能呢?
编辑:我需要比较2个字符串,但不是与=运算符和not like。例如,如果我必须找到abcba,结果可以是adbcbdac。为此,我想实现LCS(最长的公共子序列,而不是字符串)
编辑:我找到了一些postgre的扩展名为fuzzystrmatch,但它只适用于最大255字节的文本。有没有人知道这个扩展的类比?
发布于 2012-10-11 17:56:00
我同意Erwin,Craig和the Deer Hunter的观点,您可以通过告诉我们您正在进行什么样的比较来提供更多的信息?假设您比较的是文本文件,比较完整的行就足够了。那么你能把最短文件的行数和最长文件的行数进行比较吗?比较有三种可能性: 1.文件A中的行与文件B中的任何行都不匹配;2.文件A中的行与文件B中的行确实匹配;3.文件A中的行确实匹配,并且这两行都连续到前一次匹配。如果是情况1,请关闭任何打开的对象。如果存在打开的对象,则将其添加到数组中。如果是情况2,并且没有打开的对象,则创建一个新对象。如果有一个打开的对象,那么它应该是一个3号的情况,因此将行(或行号)添加到打开的对象。运行执行此比较的两个文件,您将找到答案,因为具有最大行数(或字符数)的对象将是您的LCS。
然而,我会用另一种语言来执行这种操作,而不是plpgsql。在我的例子中,它是Java还是PHP。只需将数据转换为这种类型的语言并完成工作即可。这些语言为这种类型的操作提供了更好的装备。
https://stackoverflow.com/questions/12818900
复制相似问题