下面我们就一步一步来搭建这个简单的资源搜索网站
一、搭建前的一些准备和分析
资源搜索网站有如下几个关键点:
1、原始数据
没有个几百万条初始搜索数据,都不好意思和别人说是做资源站的,在这个案例里面,我们采用了simplecd官方制作的电驴地址打包,虽然年代比较久远,但也有百万条左右,下载地址为:
https://www.douban.com/group/topic/17230136/
请注意保护版权!
2、数据存储与检索
十多年前资源的数量以百万计算,现在一个饱满的资源站的资源数量应该早已过亿,数据库大小也应该在50G以上,这样的数据,使用阿里云RDS MySQL数据库具有较高的性价比,数据量再大一些还可以结合DRDS分布式数据库一同使用
对于具体的检索技术,不同的数据库的全文索引、分词等技术各不相同,甚至连MySQL的各种版本之间的处理都有区别,而由于数据库我是确实不会。。要是会的话就不至于一直用Linq ORM了。。我想象中的100万条数据全文检索的速度应该在0.01秒左右,但自己操作MySQL进行配置和优化,始终达不到这样的查询效率
因此今天这里选择了阿里云的开放搜索服务,让阿里云来处理这些难点。
这也是今天的一个主要讲解重点,实测证明,确实检索效率很高!
3、数据爬虫与更新
初始数据载入后,后续的数据更新也非常重要,主要靠爬虫程序进行每日更新,重点在于爬虫程序的效率的所爬目标的资源质量,这里有两个难点
1)所爬目标资源。电影站、软件站、BT搜索站等等,都可以是爬虫目标资源,而如果掌握了搜索引擎的高级用法,并引入无限数量的代理IP,则可以对搜索引擎直接进行定向爬取,效果更加。如能做到每日新增10万左右新资源,则是一个比较完美的效果。
2)爬虫程序。如果仅仅是对HTML进行查询和分析,则需要很高的正则使用技巧,而如果涉及到语义分析的话,更需要很强的语言分析相关技术。爬虫程序的逻辑编写,我想.NET Framework 4.5是再适合不过了,拥有先进的多线程并行库和丰富而全面的HTTP访问手段,完胜其他各种新型语言
经过以上的分析,设计出如下的系统架构图:
二、具体的搭建步骤
1、购买一个阿里云RDS数据库并进行相关配置
因为本项目纯属测试,所以买个便宜点的按时计费的MySQL RDS
每天7块多钱,还算可以接受的范围内。
购买完成后,申请一个外网地址(用于初始数据迁移)