如何将自定义词表中的词汇添加至SQL Server的停用词表?
SQL Server 2022批量导入自定义词汇到停用词表的正确姿势
为啥直接插系统表会报错
SQL Server的系统目录表(比如sys.fulltext_stopwords)压根不让直接做增删改操作,这是系统为了稳定性和安全性加的限制,所以你碰到的Msg 259报错是正常的,别纠结这个方式了。
正确操作步骤
不用一个个手动加,按下面的步骤来就能批量搞定:
1. 先创建自定义停用词列表(没有的话)
如果还没建自己的停用词列表,先执行这句:
CREATE FULLTEXT STOPLIST CustomStoplist; GO
要是想基于系统默认的停用词列表来扩展,就改成:
CREATE FULLTEXT STOPLIST CustomStoplist FROM SYSTEM STOPLIST; GO
2. 批量生成添加脚本并执行
从你的自定义词汇表Table_1里读数据,自动生成批量添加的SQL语句,然后执行:
DECLARE @SQL NVARCHAR(MAX) = N''; SELECT @SQL += N'ALTER FULLTEXT STOPLIST CustomStoplist ADD STOPWORD ''' + REPLACE(stopword, '''', '''''') + '''; ' FROM Table_1; EXEC sp_executesql @SQL; GO
这里的REPLACE是为了处理词汇里带单引号的情况,避免语法报错,别漏掉。
3. 把自定义停用词表绑定到全文索引
如果已经有全文索引了,得把它关联到新的停用词列表:
ALTER FULLTEXT INDEX ON 你的表名 SET STOPLIST = CustomStoplist; GO
检查结果
执行下面的语句就能看到自定义停用词列表里的所有词汇了:
SELECT * FROM sys.fulltext_stopwords WHERE stoplist_id = (SELECT stoplist_id FROM sys.fulltext_stoplists WHERE name = 'CustomStoplist'); GO
内容的提问来源于stack exchange,提问作者Zahra
相关产品推荐
相关产品推荐

