我有一个SQL Server 2008数据库,其全文索引设置为一个用于搜索的表列。
当尝试使用带有以下条件的CONTAINS子句对表执行查询时:&#34; 003&#34;,它忽略前导零并返回匹配&#34; 3&#34;。<的所有行。 / p>
我们正在努力考虑搜索的前导零,任何想法?
(全文的停止列表为空)。
更新:查询
SELECT * FROM Table
WHERE CONTAINS(SearchIndex, '"003*"')
答案 0 :(得分:0)
我刚才有类似的问题。
也许一种方法是使用全文搜索选择多个结果,然后从这些结果中选择特定结果。但也许可以有更好的解决方案。
我尝试了这种方法,但它确实有效。它的工作速度比仅选择值要快得多。
答案 1 :(得分:0)
我遇到了同样的问题,发现问题在于全文解析器处理前导0的方式。 This post帮助我更好地理解。如果您使用sys.dm_fts_parser来检查全文解析器如何解析带有前导0的数字,您可以自己查看该问题。
我真的希望微软允许这个功能&#39;被关掉其他答案中提到的解决方法效果很好,但是,根据各种全文搜索功能,可以轻松地进行基于多列的匹配。
答案 2 :(得分:0)
此问题的可能解决方案是使用自定义词典。此答案中提供了更多详细信息:https://stackoverflow.com/a/22704439/1899。