搜索“c#”的全文索引

时间:2010-05-31 13:38:38

标签: sql-server freetexttable

我有一个表(假设它有一个名为'colLanguage'的列),其中包含技能列表并在其上定义了全文索引。表中的一个条目是'c#',但是当我搜索'c#'(使用以下SQL)时,我得不到任何结果。

select * from FREETEXTTABLE(tblList, colLanguage, 'c#')

有人可以帮忙吗?

由于 ķ

2 个答案:

答案 0 :(得分:1)

据我了解,#被注册为“断字符”,因此不会添加到索引中。您可以从本页所述的断字列表中取消注册:

http://msdn.microsoft.com/en-us/library/dd207002.aspx

答案 1 :(得分:1)

我的最终解决方案是基于'C#'与'c#'区别对待的事实。当'#'字符前的字母为大写字母时,'#'不会被视为断字符。因此,我必须编写脚本更新全文索引所在的表,将所有'c#'更改为'C#'(然后我将此脚本作为sql作业运行,以确保没有任何情人案例c#)并确保当搜索“c#”变成我在代码中做的“C#”时。

或者,如果您有SQL2008并且可以更改fts索引的全文语言,则可以将其设置为使用“中性”语言作为索引列的分词系统。 “中性”断字符仅在白色文本上中断。然后更改你的fts命令,将其指定为使用的语言,例如select * from FREETEXTTABLE(tblList,colLanguage,'c#',LANGUAGE 0)你可以搜索'c#'或'C#'而不需要进行其他更改*除了重建你的索引。

*您可能需要更改数据库实例的“默认全文语言”,我不得不这样做。