我有一个文本模式匹配问题,希望能得到一些指导。由于我对模式识别不是很熟悉,所以我不知道这是属于那种“哦,只需要使用某某算法”还是一个非常困难的模式问题。
我想要做的通用陈述是识别一系列SQL语句之间的相似之处,以便让我将这些语句重构为更少的存储过程或其他动态生成的SQL片段。例如,
我想要做的通用陈述是识别一系列SQL语句之间的相似之处,以便让我将这些语句重构为更少的存储过程或其他动态生成的SQL片段。例如,
SELECT MIN(foo) FROM bar WHERE baz > 123;
SELECT MIN(footer) FROM bar;
SELECT MIN(foo), baz FROM bar;
这些语句都差不多,但我希望指出MIN()函数内的值应该是可以替换的,因为我可能会在SELECT列表中添加另一列,或者加入一个可选的WHERE子句。请注意,这个例子是高度虚构的,但我希望它能让您看到我的意图。
就范围而言,我有成千上万条SQL语句,希望将它们缩减为几十个通用语句。到目前为止,我已经了解了w-shingles和n-grams等方法,并且已经放弃了"词袋"之类的方法,因为顺序很重要。把这个问题从SQL领域拿出来,另一种陈述这个问题的方式可能是"给定一系列文本语句,有哪些最小的文本片段可以用来重新组合这些语句?"