2013-04-25 122 views
0

我有業務需求,我們需要做的somce瘋狂的名稱匹配與存儲在數據庫中的記錄,我想知道是否有任何簡單的方法使用SQL Server來做到這一點。SQL Server文本搜索

在數據庫中存儲的名稱:奧斯汀ķ 名稱從UI匹配:克蘭德奧斯汀

這只是一個樣本。實際上,可能有很多不同的排列和組合。

如果是倒過來,我本可以用狂野性格,但在這種情況下,數據庫名稱是比搜索標準較小。

有什麼建議嗎?

+1

有點小心[Falsehoods程序員相信姓名](http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/)。 – minopret 2013-04-25 17:05:02

回答

0

現實 - 沒有。數據庫旨在比較絕對值,而不是混淆比較。他們在內部存儲數據的方式不適合真正混亂的匹配。實際上,即使像Google這樣的功能強大的專用搜索引擎,如果沒有先前的知識,也不能在您的示例中使用混亂的匹配功能。

我不知道這個要求是如何精確地寫出來的,但是我要麼用「技術上不可能」拍攝功能請求,要麼執行一個規則集,嘗試使用凌亂的匹配 - 例如,您可以輕鬆地'硬編碼'表示在輸入大寫字時執行多個搜索,將它們縮短爲單個字母。不知道這是否是解決問題的方法。

0

你可以使用LIKE運算符,它決定一個特定的字符串是否與指定的模式相匹配的正常搜索。您遇到的問題是多個記錄或不正確的人返回的概率。對於商業應用程序,我自己也有類似的要求,解決問題的最佳方法是要求其他符合條件的值,而不僅僅是名稱。如果您在沒有其他合格數據的情況下進行部分名稱搜索,您肯定會遇到錯誤肯定匹配和/或多條記錄。在我的情況下,我建立了一個網絡服務,檢查資格允許文本搜索的第一個&姓氏,但也添加了出生日期,主要人員SSN和性別,以確保匹配的人是在該人打算搜索的契據。如果我的情況與您的名稱是唯一的搜索條件一樣,我向企業推薦的是我們無法執行搜索,直到將合格數據輸入到數據庫中,否則沒有準確的方法來查詢他們正在查找的結果。