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

Translate

例如,使用SQL Server 2005进行的查询如下所示:

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

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

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

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

This question and all comments follow the "Attribution Required."

所有的回答

Translate

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

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

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

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

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

来源
Translate

引用有关索引服务查询语言的大量重复的帮助页面:

要在查询中使用特殊处理的字符,例如&,|,^,#,@,$,(,),请用双引号(“)将查询引起来。

据我所知,全文搜索MSSQL索引服务也可以完成此操作,因此这可能会有所帮助。

来源