我有一个SQL Server 2008数据库,全文索引设置为用于搜索的一个表列。SQL Server全文没有考虑到前导零
当试图使用CONTAINS子句对以下条件执行对查询的查询:“003”时,它忽略前导零并返回匹配“3”的所有行。
我们正在努力考虑搜索的前导零,任何想法?
(全文的清单是空的)。
UPDATE:查询
SELECT * FROM Table
WHERE CONTAINS(SearchIndex, '"003*"')
我有一个SQL Server 2008数据库,全文索引设置为用于搜索的一个表列。SQL Server全文没有考虑到前导零
当试图使用CONTAINS子句对以下条件执行对查询的查询:“003”时,它忽略前导零并返回匹配“3”的所有行。
我们正在努力考虑搜索的前导零,任何想法?
(全文的清单是空的)。
UPDATE:查询
SELECT * FROM Table
WHERE CONTAINS(SearchIndex, '"003*"')
我前一段时间有过这样类似的问题。
也许一种方法可能是通过全文搜索选择几个结果,然后从这些结果中选择特定结果。但也许可以有更好的解决方案。
我试过这种方法,它实际上工作。它也工作很多,然后只选择该值。
我遇到了同样的问题,发现问题与全文解析器处理前导0的方式有关。 This post帮助我更好地理解。如果您使用sys.dm_fts_parser来检查全文解析器如何解析具有前导0的数字,则可以自己查看问题。
我真的希望微软允许这个'功能'关闭。其他答案中提到的解决方法效果很好,但是,不容易基于多个列进行匹配,例如各种全文搜索功能。
此问题的一个可能的解决方案是使用自定义词典。更多的细节可以在这个答案中找到:https://stackoverflow.com/a/22704439/1899。
向我们显示您的查询。 –
查询的输出是什么?你说它返回所有匹配“3”的行,但是它是否也返回带有前导零的行?普通的SELECT * FROM Table where where SearhIndex LIKE'003%'是否有效? – TheBoyan
确实返回带有前导零的那些和没有它们的那些。 – luisporras