想做个一般的搜索引擎是很容易的,就像wuxin说的那样。    想做个好的就比较难了。如果纪录超过十几万条甚至几十万条、几百万的话,如果还是老老实实的去全文搜索的话,你能支持几个浏览器同时访问?    一般较好的做法是使用缓存——对用户查询较多的关键字对应的数据提取出来建表,然后当用户查询的关键字在其中的话就直接返回该关键字对应的数据,否则就到原始数据库查(你也可以把这个关键字存下来以供以后使用)。    因为通常一个关键字对应的数据纪录在几十到几千条左右,所以这样就非常的快,而且避免了对同一个数据源过于频繁的操作。    当然,说说容易,真正做起来的话还需要很多工作和技巧。比如,原始数据库中的数据更改会影响到关键字的数据纪录,你要保持同步(这只是个容易解决的小问题)。

解决方案 »

  1.   

    同意wuxin,搜索引擎的原理(我指的是实用的)无非是对一个庞大的数据库建立不同的keyword,然后根据不同的keyword对要搜索的文档(有可能为远程,将其搜回并存入自己的数据库的某字段,以备下次用)进行全文搜索。
    就像andygood所说,当记录很多时,用单步线程时很难完成任务的,这时一般要用多线程(6至7个,在资源允许的情况下),多线程还有利于多个大型搜索引擎的提交,当搜索开始时,同时启动这些线程,每个线程完成的时间不一致,一个线程完成后用新生成的线程补充,这样反反复复直至搜索结束!
    andygood所说的“缓存——对用户查询较多的关键字对应的数据提取出来建表”技术很好,其实这个技术加上我以上所述完全可以开发一个离线搜索的商业项目。
    其实yahoo、Alta Vista、Britannica.com等其他著名搜索引擎的做法和我们阐述的大同小异,搜索引擎的关键技术在数据库管理上!
    另搜索网页的问题请参考ISAPI技术及CInternetSession这个类......