sqlserver 全文索引 多个or条件 快速获取匹配次数的问题!
数据库的表Cnstring字段建立了全文索引
我不知道可不可以一个字段可以直接显示匹配次数。比如 CONTAINS(Cnstring, '"计算机" or "系统" or “是" or "新东西"')有一条记录他的Cnstring字段值是“我的电脑用的是计算机系统” 实际包含了 "计算机",“系统”,“是”,那么这条记录的匹配次数是3,另外一条记录cnstring字段是“我们都在用计算机系统”这个实际匹配的是2.有没有什么方法可以快速的得到这个结果,我测试了分成多个sql执行多次查询然后在程序里计算次数或者union all语句执行速度太慢了。
[解决办法]
select Cnstring,
case when charindex('计算机',Cnstring,1)>0 then 1 else 0 end
+case when charindex('系统',Cnstring,1)>0 then 1 else 0 end
+case when charindex('是',Cnstring,1)>0 then 1 else 0 end
+case when charindex('新东西',Cnstring,1)>0 then 1 else 0 end '匹配次数'
from [表名]
where contains(Cnstring,'"计算机" or "系统" or "是" or "新东西"')