我正在尋找一種簡單的方法(UDF?)來建立字符串之間的相似性。 SOUNDEX
和DIFFERENCE
函數似乎沒有完成這項工作。字符串之間的相似性 - SQL Server 2005
相似性應基於共同字符的數量(順序重要)。
例如:
Spiruroidea SP。 AM-2008
和
Spiruroidea根。 SP。 AM-2008
應該被認爲是相似的。
任何指針將非常感激。
謝謝。
基督教
我正在尋找一種簡單的方法(UDF?)來建立字符串之間的相似性。 SOUNDEX
和DIFFERENCE
函數似乎沒有完成這項工作。字符串之間的相似性 - SQL Server 2005
相似性應基於共同字符的數量(順序重要)。
例如:
Spiruroidea SP。 AM-2008
和
Spiruroidea根。 SP。 AM-2008
應該被認爲是相似的。
任何指針將非常感激。
謝謝。
基督教
你可能要考慮實施Levenshtein Distance算法作爲UDF,這樣它會返回需要在訂單上String一個執行操作的數量使它成爲字符串B.這通常被稱爲edit distance。
然後,您可以比較萊文斯坦距離函數的結果對一個固定的閾值,或對String一個或字符串B的百分比長度
只需將如下使用它:
WHERE LEVENSHTEIN(Field_A, Field_B) < 4;
您可能要檢查的SQL Server以下Levenshtein距離實現:
這些事情不是微不足道的,你應該提供更多的例子。
正如Daniel levenshtein提到的那樣,距離是一條可行的路線,但是對於您的示例,如果您知道可以安全地放棄某些單詞,則可能需要預先處理這些字符串 - 例如,從您的示例中可以看出文字。可以被丟棄。
levenshtein距離將考慮任何四個字母的單詞而不是gen。和gen一樣。這可能不是你想要的。
此外,如果您的數據集來自不同的數據源,您可能會考慮構建同義詞字典並調查您的域的現有標準分類法。也許如this?
即使它看起來很複雜....它非常酷。這會比SoundEx提供更準確的結果。爲你+1。 – Raja 2010-04-12 12:10:03
此鏈接不再有效... – 2013-05-14 18:05:44
帶有工作鏈接的固定版本:http://devio.wordpress.com/2010/09/07/calculating-levenshtein-distance-in-tsql/ – 2013-05-14 18:21:07