如果我有一个包含varchar(max)全文索引列的表,并且我将以下内容放在'CLP3 365 367‘列中,那么您就不能搜索365或367。command (mytable,‘365“)命令不提供任何数据。
如果我将字段设置为'clp3 365367‘,一切都很好。如果没有CLP (大写),那么一切都很好。顺便说一下,数据库是不区分大小写的。
如果我把什么东西放在‘中电’之前,那么FTS就会找到它。在中电之后,它找不到任何单词。
“中电”是某种神奇的关键词吗?FTS的语言是中性的,没有停止列表。此脚本只提供2条记录,而不是3条。
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*"') 发布于 2018-09-21 11:42:56
微软支持“解决”了这个问题。
中电是智利的货币。
当我们使用任何货币代码(Ex:美元、INR、ZAR等)时,都可以看到同样的行为。“
因此,在任何货币代码(大写)和它之后的数字之后,它就找不到下面的数字。如果有字后的货币代码比全文搜索会找到它,并找到后的数字。
我的解决方案是将文本中的任何货币代码转换为小写。(因为我们不需要这个特性,而且我们的数据库不区分大小写)。
https://stackoverflow.com/questions/50761566
复制相似问题