2013-06-13 168 views
4

我有一个数据库,其中包含某些列入黑名单的公司和个人的名称。 创建的所有交易,其详细信息都需要根据这些列入黑名单的名称进行扫描。创建的交易名称可能没有正确拼写,例如,可以将“Wilson”写为“Wilson”,“Vilson”或“Veelson”。模糊搜索逻辑或实用程序应与黑名单数据库中存在的名称“Wilson”相匹配,并根据用户设置的所需正确性/准确性百分比,必须在百分比集内显示匹配的名称。模糊名称匹配算法

交易将分批或实时发送,以检查黑名单。

我将不胜感激,如果用户谁也有类似的要求,并已实现了它们,也可以给自己的意见和实施

+0

请出示一些代码 –

+0

它是从SDN名单? http://www.treasury.gov/resource-center/sanctions/SDN-List/Pages/default.aspx –

回答

4

T-SQL中留下的模糊搜索的境界了很多有待改进。你最好的选择是第三方库,但如果你不想搞砸,最好的办法就是使用内置在SQL Server中的DIFFERENCE函数。例如:

SELECT * FROM tblUsers U WHERE DIFFERENCE(U.Name, @nameEntered) >= 3 

DIFFERENCE的较高返回值表示较高的准确性。这样做的缺点是,该算法偏爱听起来很相似的单词,这可能不是你想要的特征。

下一个例子说明如何获得最佳的匹配出表:

DECLARE @users TABLE (Name VARCHAR(255)) 

INSERT INTO @users VALUES ('Dylan'), ('Bob'), ('Tester'), ('Dude') 

SELECT *, MAX(DIFFERENCE(Name, 'Dillon')) AS SCORE FROM @users GROUP BY Name ORDER BY SCORE DESC 

它返回:

Name | Score 
Dylan 4 
Dude 3 
Bob 2 
Tester 0 
+0

感谢dkoch的回复,有没有一个很好的第三方实用程序,你可以建议。其次,如果有任何工具可以使用阿拉伯语。这将需要阿拉伯名称/字,并将与英文参考表进行比较。 – user2477549