小编典典

sys.dm_fts_parser SQL全文

sql

我们很难弄清楚赋予sys.dm_fts_parser的两个相似字符串会产生不同的结果

select * from sys.dm_fts_parser('"0 CAD"', 0, null, 0)

似乎认为“ 0 CAD”是一个令牌(返回2个令牌)

select * from sys.dm_fts_parser('"0 cad"', 0, null, 0)

返回3个令牌-正确

更重要甚至更令人困惑的是为什么

select * from Table where contains(*,"point 5 CAD")工作 select * from Table where contains(*,"point 5 cad")失败

搜索的列包含“ point 5 CAD”的位置-

全文索引构建器不应该基于索引设置而忽略杂音词(例如“ 5”)或将其包括在内。
我们都尝试过并且无法解释为什么“ nnnn CAD”是特别的东西

请注意,根据http://msdn.microsoft.com/zh-
cn/library/ms142583.aspx,假定全文不区分大小写

我想念什么?

编辑:使用SQL 2012 11.0.2218


阅读 203

收藏
2021-04-28

共1个答案

小编典典

使用SQL 2008时

select * from sys.dm_fts_parser('"0 CAD"', 0, null, 0) - gives 2 tokens   
select * from sys.dm_fts_parser('"0 CAD"', 1033, null, 0) - gives 3 tokens

在SQL 2012(11.0.3218)上:

select * from sys.dm_fts_parser('"0 CAD"', 1033, null, 0) - gives 2 tokens

在SQL2012中,Microsoft引入了一个新的分词系统(版本14.0.4763.1000)http://msdn.microsoft.com/zh-
cn/library/gg509108.aspx

看来工作破坏者现在可以识别3个字符的ISO 4217货币代码,并且如果在3个字符代码之前有一个数字,则不会分解。

2021-04-28