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

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

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

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

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

===============>>#1 票数:13 已采纳

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

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

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

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

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

===============>>#2 票数:1

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

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

据我所知, MSSQL全文搜索也是由索引服务完成的,所以这可能有所帮助。

  ask by Geoff Dalgas translate from so

未解决问题?本站智能推荐:

关注微信公众号