CLP word之后SQL全文搜索不起作用
如果我有一个表,它有一个varchar(max)全文索引列,我会在该列中添加以下内容 “CLP3 365 367”,则无法搜索365或367。 containstable(mytable““365”)命令不提供任何数据 如果我将字段设置为“clp3 365 367”,则一切正常。 如果没有CLP(upcase),则一切正常。顺便说一下,数据库不区分大小写 如果我在“CLP”之前放了什么,FTS就会找到它。在CLP之后,它找不到任何单词 “CLP”是一种神奇的关键词吗? 金融时报的语言是中立的,没有禁止名单。 此脚本仅提供2条记录,而不是3条CLP word之后SQL全文搜索不起作用,sql,full-text-search,Sql,Full Text Search,如果我有一个表,它有一个varchar(max)全文索引列,我会在该列中添加以下内容 “CLP3 365 367”,则无法搜索365或367。 containstable(mytable““365”)命令不提供任何数据 如果我将字段设置为“clp3 365 367”,则一切正常。 如果没有CLP(upcase),则一切正常。顺便说一下,数据库不区分大小写 如果我在“CLP”之前放了什么,FTS就会找到它。在CLP之后,它找不到任何单词 “CLP”是一种神奇的关键词吗? 金融时报的语言是中立的,没
create table fts_test (id int identity(1,1) , fts varchar(max))
create unique index fts_ind on fts_test (id)
insert into fts_test (fts)
values ('CLP3 365 367'), ('clp3 365 367'), ('365 CLP3 367')
cREATE FULLTEXT INDEX ON fts_test (fts) key index fts_ind with stoplist=system;
select * from containstable(fts_test, *, '"365*"')
Microsoft支持“解决”了该问题
中电是智利的货币
当我们使用任何货币代码(例如:美元、印度卢比、南非兰特等)时,都可以看到相同的行为。”
因此,在任何货币代码(大写)和后面的数字之后,它都找不到下面的数字。如果货币代码后面有单词,则全文搜索将找到它并找到后面的数字
我的解决方案是将文本中的任何货币代码转换为小写(因为我们不需要此功能,而且数据库的代码不区分大小写)