我有一个产品表,其中描述列是全文索引的。
问题是,用户经常搜索一个单词,而这个单词恰好在 noiseXXX.txt 文件中。
我们希望保持启用干扰词功能,但是否有仅针对这一列将其关闭?
我认为您可以在2008 年使用 SET STOPLIST=OFF执行此操作,但我似乎无法在SQL Server 2005中找到类似的功能。
我有一个产品表,其中描述列是全文索引的。
问题是,用户经常搜索一个单词,而这个单词恰好在 noiseXXX.txt 文件中。
我们希望保持启用干扰词功能,但是否有仅针对这一列将其关闭?
我认为您可以在2008 年使用 SET STOPLIST=OFF执行此操作,但我似乎无法在SQL Server 2005中找到类似的功能。
在 SQL Server 2005 中,干扰词列表应用于整个服务器。您可以通过删除相应的干扰词文件然后重新构建全文索引来禁用整个服务器的干扰词。但我不相信在 SQL Server 2005 中可以选择性地禁用单个表的干扰词。例如,请参见此处、此处和此处。
在 SQL Server 2008 中,FTS 从使用干扰词文件转变为停止列表。停止列表是包含不包含在全文索引中的停用词集合的容器,并替换了干扰词文件的功能。
在 SQL Server 2008(仅兼容级别 100)中,您可以为给定语言创建多个停止列表,并且可以为各个表指定停止列表。也就是说,一个表可以使用给定的非索引字表,第二个表可以使用不同的非索引字表,第三个表可以完全不使用非索引字表。停止列表设置适用于整个表,因此如果您在单个表中索引了多个列,则它们都必须使用相同的停止列表。
因此,要回答您的问题,我认为在 SQL Server 2005 中不可能有选择地禁用单个表的干扰词,而将它们保留用于其他表。如果这对您来说是个大问题,这可能是将您的服务器升级到 SQL Server 2008 或 2012 的好机会。