本人虽未南大软院大三学生,但是对于一些技术还是很有研究的想法的。近日我们的体系结构老师布置了搜索引擎大作业,八个人一组的,我负责爬虫,分布式应用的开发。搞了将近3周,小有所成,于是想上来分享一下经验。
       个人认为初学搜索引擎者不要用lucene和heritrixs(忘了怎么拼的了- -~),我用这两个做了个小应用,发现实在是什么都封装好了,根本学不到什么东西。
       学习之前可以研究一下国内的一些搜索引擎的常用做法。话说我们的作业有点儿变态(个人认为),倒不是功能要求很多,而是性能和非功能需求很多:具体如下:
1、 要求网页爬取每天都进行,每天更新一次储存库。
2、 为具备可能的大量爬取能力,爬取应该能够多机器同时并发进行。实验要求至少3个以上处理器并发。
3、 为了验证大数据量能力,实验要求收集到的网页的数量不低于20万条。
4、 系统要有安全措施,储存的内容应该加密,实验中不要求采用复杂的加密算法,能够进行简单的加密即可。
5、 要求系统能够同时允许大量用户访问,实验要求系统具备一定的载荷(实验要求200用户),如果使用多服务器,那么要具有负载均衡能力。
6、 要求系统反应及时,要能够在10秒内给出查询结果。
7、 系统要具有高可用性,实验要求在查询时,能够返回“非字符匹配”的相关结果(例如查询“南京大学”,能够返回“南大”的信息)。
8、 系统要有容灾能力,如果发生故障,尤其是存储库发生故障,实验要求在4小时内能够恢复工作。
9、 系统要有可靠性,实验要求系统采用冗余机制实现高可靠性。
10、 系统要有可修改性,实验会在后面的阶段安排变更的要求。可能的变更点包括:爬取文档的类型;加密算法;检索匹配算法;排序算法;摘要提取算法;用户输入词汇解析算法。
11、 系统要符合法律规则,实验中要求进行候选敏感词过滤,且敏感词随时可以调整。
12、 系统要符合商业目标,实验要求系统实现竞价策略,即可按照加权的方式对某些搜索结果的先后顺序进行调整。
这些都是质量要求,功能要求就不发了,我在做这个的分布式应用时,选择了CORBA,结果果断很悲剧,网上一搜,资料寥寥无几,不得不去sun官方论坛上去找人帮忙,看人家的老帖,全英文的,搞死人了。那个什么对象传递,中文传递等问题,不过最终都一个个被我解决了,现在我已经实现了大部分功能,之后我会发一下测试数据,希望大家帮我衡量一下我做的这个分布式爬虫的效率。O(∩_∩)O~