东拼西凑一个搜索引擎

经过一周的开发,icysearch这个基于北邮人论坛的搜索网站终于初步有了个雏形,虽然现在来说,搜索准确度和广度都不够,但是好歹是个东西了。

然后总结一下这一周的时间都花在什么上了:

  • 搭建环境(两天)
    由于一些众所周知的原因,我的环境搭建之路异常缓慢,一个依赖编译可能就会扯出一堆恶心的东西,又赶上这一阵阅兵,外网某些服务真是根本不能用,虽然搭建开发环境这事情不难,但是真的真的可以很恶心
  • 爬虫爬取(1天半)
    很不系统的学习了一下scrapy框架,一拍脑袋,有了一个巨搓的技术方案,于是开始实现,首先就得爬取byrbbs所有的页面,这个其实不怎么耗时,数据量也不大,还是在Gb这个级别的,但是好说歹说也爬了一天整才把论坛给全部爬下来。当然,全部爬下来以后惊讶的发现忘记爬了文章标题这就是后话了。
  • 建立模糊索引(3天+)
    建模糊索引也用的是个开源的东西。之所以有个3+是因为到目前索引还没有建完,甚至连一半都没有建到,按道理说索引这东西也不至于用这么久,这一部分我自己也还在调查原因,建索引的时候经常性的cpu打满,然后各种服务不正常,然后索引巨慢,或者索引服务直接挂掉,这里可能是有一些我自己也没注意到的坑,然后我踩上去了半天还没发现,不过目前的怀疑是机器配置不够,毕竟elasticsearch的推荐配置的内存是我的32倍。
  • 开发前端(半天)
    其实得算四分之三天,花了一个晚上同样很不系统地学习了一下django,然后第二天早上直接抄了一个前端,改了个背景,于是就有了现在的界面,抄前端这个事确实有点无耻,但是我自己实在是不会写前端那些个东西。

可能大家一算,这加起来也不是7天啊,的确,这些东西有的是可以同时做的,比如建索引和爬虫,或者建索引和前端。而且这一周白天还得实习,晚上间断的写一些,仔细算算开发量其实很小,不算前端的话代码往多了算也只有几百行,主要的功夫都花到拼装那些组件上去了。

接下来说一下想象中这个搜索引擎的架构:

网站,爬虫,索引各一个服务器,爬虫和索引服务器之间用一个rabbitmq,嗯,不错的样子,但是实际上是这儿样子的,也并没有用rabbitmq:

为什么呢?是时候上这张图了


贵啊,根本租不起新机器,连旧机器升级配置也根本升级不起,这时候才知道互联网真是个烧钱的东西。现在服务器跑起索引来是这个样子的:

cpu占用率接近100%,服务经常性的崩溃,这部分的性能问题真希望有人来帮我排查下。

所以大体数据处理的思路还是很明显的,爬虫抓,索引建,网站取,一条龙。