2010-04-12 76 views
4

我正在尋找一種簡單的方法(UDF?)來建立字符串之間的相似性。 SOUNDEXDIFFERENCE函數似乎沒有完成這項工作。字符串之間的相似性 - SQL Server 2005

相似性應基於共同字符的數量(順序重要)。

例如:

Spiruroidea SP。 AM-2008

Spiruroidea根。 SP。 AM-2008

應該被認爲是相似的。

任何指針將非常感激。

謝謝。

基督教

回答

6

你可能要考慮實施Levenshtein Distance算法作爲UDF,這樣它會返回需要在訂單上String一個執行操作的數量使它成爲字符串B.這通常被稱爲edit distance

然後,您可以比較萊文斯坦距離函數的結果對一個固定的閾值,或對String一個或字符串B的百分比長度

只需將如下使用它:

WHERE LEVENSHTEIN(Field_A, Field_B) < 4; 

您可能要檢查的SQL Server以下Levenshtein距離實現:

+0

即使它看起來很複雜....它非常酷。這會比SoundEx提供更準確的結果。爲你+1。 – Raja 2010-04-12 12:10:03

+0

此鏈接不再有效... – 2013-05-14 18:05:44

+0

帶有工作鏈接的固定版本:http://devio.wordpress.com/2010/09/07/calculating-levenshtein-distance-in-tsql/ – 2013-05-14 18:21:07

1

這些事情不是微不足道的,你應該提供更多的例子。

正如Daniel levenshtein提到的那樣,距離是一條可行的路線,但是對於您的示例,如果您知道可以安全地放棄某些單詞,則可能需要預先處理這些字符串 - 例如,從您的示例中可以看出文字。可以被丟棄。

levenshtein距離將考慮任何四個字母的單詞而不是gen。和gen一樣。這可能不是你想要的。

此外,如果您的數據集來自不同的數據源,您可能會考慮構建同義詞字典並調查您的域的現有標準分類法。也許如this

相關問題