5

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

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

我将不胜感激,如果有类似要求并已实施的用户也可以发表他们的看法和实施

4

1 回答 1

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
于 2013-06-13T14:33:53.087 回答