字符串之间的相似性 - SQL Server 2005

时间:2010-04-12 11:46:49

标签: sql sql-server-2005 user-defined-functions

我正在寻找一种简单的方法(UDF?)来建立字符串之间的相似性。 SOUNDEXDIFFERENCE功能似乎无法完成任务。

相似性应基于共同的字符数(订单事项)。

例如:

  

Spiruroidea sp。 AM-2008

  

Spiruroidea gen。 SP。 AM-2008

应该被认为是相似的。

非常感谢任何指针。

感谢。

基督教

2 个答案:

答案 0 :(得分:8)

您可能需要考虑将Levenshtein Distance算法实现为UDF,以便它返回需要在字符串A上执行的操作数,以使其成为字符串B.这通常是指作为edit distance

然后,您可以将Levenshtein距离函数的结果与固定阈值或字符串A或字符串B的百分比长度进行比较。

您只需按以下方式使用它:

WHERE LEVENSHTEIN(Field_A, Field_B) < 4;

您可能需要查看以下针对SQL Server的Levenshtein Distance实现:

答案 1 :(得分:1)

这些事情并非微不足道,你应该提供更多的例子。

正如Daniel levenshtein提到的那样,距离是一种方法,但是对于你的例子,你可能想要预先处理字符串,如果你知道你可以安全地删除某些单词 - 例如,从你的例子中可以看出这个单词根。可以放弃。

levenshtein距离将考虑任何四个字母而不是gen。和gen一样。这可能不是你想要的。

此外,如果您的数据集来自不同的数据源,您可以考虑构建同义词词典并调查您域的现有标准分类法。也许比如this