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