有一个文章库,预测将来的数据将达到15万条以上,文章由标题和正文两部分组成,其它信息包括文章发表时间,文章作者,用户根据自定义的指标给文章评的分数(比如用户可以根据“真实度”、“语句华美”等打分,这些指示都是用户在打分的时候自己填上去的)。大多数文章正文内容会超过3000字。网站要求提供给用户可以根据多个关键字搜索文章的功能,并可以根据发表时间、文章的分数等进行排序。现在我把文章全部放到一个表中。现在有几个问题1、如果简单地用类似于
    select id, title, content from article where title like '%keyword%' or content like '%keyword'
进行查询,效果非常差,在我的机器上测试全部查找出来大约要10分钟2、我测试过一个叫 Lucene 的免费组件,用它可以在几百毫秒内找到要搜索的ID列表,然后用
select id, title, content from article where id In (2, 3, 5, 6, 8)
查找,但是如果找到ID数量太大,比如有2000条以上时,还是需要至少一两分钟的时间才能完成查找。
而如果把数据全部查找出来,却又无法根据评分进行排序。

解决方案 »

  1.   

    可以使用Lucene把数据抓成索引文件,搜索也通过它
      

  2.   

    添加内容时增加个keyword字段,全文搜索就可以搜这个字段
      

  3.   

    我用 Lucene 试过了,还自己写了分词的类但问题是,如果搜索到的记录太多的话,无论是把内容存到索引文件是搜索到ID然后到数据库里查,也都要花费大量的时间
      

  4.   

    select id, title, content from article where id In (一万个ID)这种性能没有问题的吧。 
      

  5.   


    你没有使用到全文检索。你google一下“sql server 全文检索”,先了解什么才是sql server的全文检索技术。