SQL Tips:兼顾检索速度和精确性
即使是SQL Server 2000,全文检索的功能已经能够满足基本需要,有迹象表明在设置相关字段为全文索引的时候,即使是使用这个字段进行like操作,速度也会较没有全文索引快很多。不过既然建立全文索引了,大部分人肯定还是使用CONTAINS来进行操作了,这种速度肯定比like操作更快。一般格式是:
select [想要的字段名] from [表] where CONTAINS(查询字段名, '[查询词]')
最近碰到一个问题,需要精确查询某个关键词所在的位置,比如开头处、结尾处出现固定的串。而在使用CONTAINS的时候,SQL其实已经进行了分词,查询的结果没法限定为固定的位置,更不知道如何限定SQL不进行分词(即精确查询而非模糊查询)。怎么办呢?
想了一个笨方法,速度还是很快,比如搜索以查询词结尾为条件的语句可以为:
select [想要的字段名] from [表]
where CONTAINS(查询字段名, '[查询词]') and [查询字段名] like '%[查询词]'
这多出的一个条件用于确定搜索的精确性。我相信这不是最好的解决方案,抛砖引玉,欢迎大家讨论。
Other Tips: