十年前,懂得搜索技术的人,应该是“计算机科学中的战斗机”。
不过这几年,随着Lucene、Nutch等一大批开源软件,搜索变成普通的技术了。我也是这些开源软件的受益者,不但顺利完成毕业论文,找工作也靠这个吹嘘。
搜索技术,也叫信息检索,理论方面的书籍包含:《现代信息检索》、《信息检索导论》、《搜索引擎:信息检索实践》等书籍,详见信息检索推荐书籍。
信息检索的核心技术:
- 分词;
- 倒排序;
- 索引构造、索引压缩;
- 文档评分、词项权重计算、向量空间模型;
- 检索
其中4是评价一个搜索引擎质量高低的一个重要标准,Google搜索引擎的出色之处是PageRank(当然Google现在不仅仅是PageRank)。
一个现代的搜索引擎不只是包含信息检索,要处理数以亿计的网页,需要上万台服务器,甚至上百万台服务器。 需要使用以下技术:
- 分布式文件系统,例如Google的DFS,Hadoop的HDFS;
- Map-Reduce;
- 以亿计的Key值存储,如Hadoop的HBase;
- 等等
上述的技术,是一些商业公司的核心机密,很多细节我们无法知道。
wuawua.com里面的部分内容是通过搜索引擎抓取回来的,流程如下:
wuawua.com的目标是知识管理(并不想成为专业的搜索网站),尽可能采用了大量的开源软件以减少开发成本:
- Hadoop,分布式计算;
- Nutch,搜索引擎;
- Mahout,机器学习;
- WebHarvest,信息提取;
- Lucene,信息检索;
- ......
开源软件只是较少我们重新造轮子的时间,想造出一个美轮美奂的汽车,还是需要花费大量的时间,其中艰辛后面一一叨出来。