表TABLE有字段 ID,TITLE,BODY,QZ
其中QZ是数值代表权重的意思
ID做了主键
已对TITLE和BODY做了全文索引
数据量近百万需要达到的效果是:
用户输入任意字符 如: 你好啊可爱的大熊猫
由程序进行分词后进行全文检索. 如: 你好/啊/可爱/的/大熊猫
排序规则是 
TITLE包函完整字符串"你好啊可爱的大熊猫" 加200
TITLE包函分词字符串如"你好" 加100
BODY包函完整字符串"你好啊可爱的大熊猫" 加100
BODY包函分词字符串如"你好" 加50
最后再加上QZ进行倒序排列.我使用的SQL语句是:select top 1000 title,body,(case when contains(title,'"你好啊可爱的大熊猫"') then 200 else 0 end +case when contains(title,'"你好"') then 100 else 0 end |case when contains(title,'"可爱"') then 100 else 0 end+case when contains(title,'"大熊猫"') then 100 else 0 end + qz) as pm from table with(index(PK_webdata)) where
contains(title,'"你好啊可爱的大熊猫"') or contains(title,'"你好"') or contains(title,'"可爱"') or contains(title,'"大熊猫"')
order by pm desc
查出的结果还算满意,就是查询的字符串越长速度越慢.如果把case when去了速度可以快很多.其实最终想达到的效果就是百度那样的样果.有以下几个问题:
这个SQL语句是否合理,有没有更好的语句或方法可以达到类似效果.
谁知道百度是怎么实现的,基本思路是什么,我只知道它是自已开发的数据库,不过原理应该差不多.