SQL Server全文未考虑前导零

时间:2011-12-12 19:41:40

标签: sql-server sql-server-2008 full-text-search full-text-indexing

我有一个SQL Server 2008数据库,其全文索引设置为一个用于搜索的表列。

当尝试使用带有以下条件的CONTAINS子句对表执行查询时:&#34; 003&#34;,它忽略前导零并返回匹配&#34; 3&#34;。<的所有行。 / p>

我们正在努力考虑搜索的前导零,任何想法?

(全文的停止列表为空)。

更新:查询

SELECT * FROM Table
WHERE CONTAINS(SearchIndex, '"003*"')

3 个答案:

答案 0 :(得分:0)

我刚才有类似的问题。

也许一种方法是使用全文搜索选择多个结果,然后从这些结果中选择特定结果。但也许可以有更好的解决方案。

我尝试了这种方法,但它确实有效。它的工作速度比仅选择值要快得多。

答案 1 :(得分:0)

我遇到了同样的问题,发现问题在于全文解析器处理前导0的方式。 This post帮助我更好地理解。如果您使用sys.dm_fts_parser来检查全文解析器如何解析带有前导0的数字,您可以自己查看该问题。

我真的希望微软允许这个功能&#39;被关掉其他答案中提到的解决方法效果很好,但是,根据各种全文搜索功能,可以轻松地进行基于多列的匹配。

答案 2 :(得分:0)

此问题的可能解决方案是使用自定义词典。此答案中提供了更多详细信息:https://stackoverflow.com/a/22704439/1899