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

Geo*_*gas 22 sql sql-server indexing full-text-search sql-server-2005

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

SELECT * FROM Table WHERE FREETEXT(SearchField, 'c#') 
Run Code Online (Sandbox Code Playgroud)

我定义了一个全文索引来使用SearchField列,它在使用时返回结果:

SELECT * FROM Table WHERE SearchField LIKE '%c#%'
Run Code Online (Sandbox Code Playgroud)

我相信#是一个特殊的字母,那么如何让FREETEXT正确地用于上面的查询呢?

Jar*_*xon 14

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

这样做后,在本地测试并重建索引,我得到了结果!

查看在索引列上使用不同的断字符语言,以便不忽略这些特殊字符.

编辑:我也发现了这个信息:

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