小编典典

为什么SQL全文索引不返回包含#的单词的结果?

sql

例如,我的查询类似于使用SQL Server 2005的以下查询:

SELECT * FROM Table WHERE FREETEXT(SearchField, 'c#')

我定义了全文索引以使用列SearchField,该列在使用时返回结果:

SELECT * FROM Table WHERE SearchField LIKE '%c#%'

我相信#是一个特殊的字母,那么如何让FREETEXT对于以上查询正常工作?


阅读 230

收藏
2021-03-23

共1个答案

小编典典

#char被索引为标点符号,因此被忽略,因此看起来我们将从单词索引忽略列表中删除了字母C。

完成此操作并重建索引后,在本地对其进行了测试,我得到了结果!

考虑在索引列上使用其他分词系统语言,以便那些特殊字符不会被忽略。

编辑:我也发现此信息

c#被索引为c(如果c不在您的干扰词列表中,请参阅稍后在干扰词列表中查看更多信息),但是C#被索引为C#(在Win2003上运行的SQL
2005和SQL 2000中,无论C或c是否在您的干扰中单词表)。存储为C#的不仅是C#,而且任何大写字母后跟#。相反,c
(以及其他任何小写字母后跟)都被索引为c(无论c是否在您的干扰词列表中)。

2021-03-23