例如,我的查询类似于以下使用SQL Server 2005:
SELECT * FROM Table WHERE FREETEXT(SearchField, 'c#')
我定义了一个全文索引来使用SearchField列,它在使用时返回结果:
SELECT * FROM Table WHERE SearchField LIKE '%c#%'
我相信#是一封特殊字母,那么如何让FREETEXT正常运行上述查询呢?
答案 0 :(得分:12)
#char被标记为标点符号,因此被忽略,所以看起来我们将从我们的单词索引忽略列表中删除字母C.
在执行此操作并重建索引后在本地测试它,我得到了结果!
在索引列上使用不同的分词系统语言,以便不会忽略这些特殊字符。
编辑:我还找到了this information:c#被索引为c(如果c不在您的干扰词列表中,稍后会在噪声词列表中查看更多信息),但C#被索引为C#(在SQL 2005和在Win2003上运行的SQL 2000中,无论C或c是否为在你的噪音词清单中)。不仅C#存储为C#,而且任何大写字母后跟#。相反,c ++(以及任何其他小写字母后跟++)被索引为c(无论c是否在您的干扰词列表中)。
答案 1 :(得分:1)
引用一个关于索引服务查询语言的重复帮助页面:
要在查询中使用特殊处理的字符,例如&,|,^,#,@,$,(,),请将查询括在引号(“)中。
据我所知,MSSQL
中的全文搜索也是由索引服务完成的,所以这可能有所帮助。