数据库的表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 "新东西"')
------解决方案--------------------
可能需要考虑把表的存储数据分开,否则or的效率不高,charindex也是扫描