gpt4 book ai didi

sql - 从自由格式文本字段中提取人名

转载 作者:行者123 更新时间:2023-12-04 23:48:12 24 4
gpt4 key购买 nike

我有一个包含 3000 万条记录的大表,其中包含一个自由格式的文本字段,该字段可能包含任何位置的名称和任何称呼,或者根本不称呼。

我的工作是用 Xxxxx Xxxxx 屏蔽名字以保护隐私。

我可以访问一个大型姓氏数据库,该数据库为我定义了姓名的构成。

使用 SQL Server 2012,我可以使用什么最有效的技术来完成这项任务?

编辑

好的,我有一些工作相当不错的东西,包括全文索引/搜索、名称数据库和存储过程。

但是,我遇到了一个相当特殊的问题。我正在使用 CONTAINS 谓词 (CONTAINS([textvaluefield], @namestring) where SET @namestring = 'NEAR((Dr.,'+@name+'), 1, TRUE)'。

除非 [textvaluefield] 中的称呼是“DR”,否则这非常有效。而不是“Dr.”,即“DR. Johnson”没有被选中,但“Dr. Johnson”被选中了。我已经验证了这一点,因为如果我从“DR”更改记录的 [textvaluefield] 中的值。到“博士”,但保持其他一切不变,该记录将突然被拾起。如果我将记录恢复为使用“DR.”,它将不会被再次提取。

奇怪的是我确实使用了不区分大小写的排序规则 (Latin1_General_CI_AS)。有人有什么想法吗?

最佳答案

如果您可以验证您的“停用词”表中没有任何记录:

SELECT * FROM sys.[fulltext_system_stopwords] AS FSS WHERE [stopword] LIKE 'Dr_'
SELECT * FROM sys.[fulltext_stopwords] AS FS

我也遇到了类似的问题并通过在您需要的表和列上创建模式绑定(bind) View 并使用 LOWER 函数显式创建列来解决它。

CREATE VIEW [User].[UserValues]
WITH
SCHEMABINDING
AS
SELECT
[UserId]
, [UserName]
, LOWER(Username]) AS [LoweredUsername]
FROM
[User].[Values]

不要忘记为全文添加唯一的聚集索引。

关于sql - 从自由格式文本字段中提取人名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25150024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com