今天读了一下午《搜索引擎原理、技术与系统》,做点笔记。
简单说来,搜索引擎由以下三部分组成:
蜘蛛:
蜘蛛(Spider),又叫爬虫,agent什么的,总之就是一个程序用来采集互联网上的网页。采集到的页面越多、速度越快,就越成功。这里涉及的技术难点主要是:
这里全是干杂活的:
最后一步就是查询了,步骤很简单:将查询请求分词,检索结果,排序。
涉及技术难点是:
简单说来,搜索引擎由以下三部分组成:
蜘蛛一只只要凑齐了这三件东西,我们在自己的PC上也可以跑一个搜索引擎。它与Google那骇人听闻的服务器集群相比,只有吞吐量、响应速度和收录率的差别而已。
预处理器若干
自带用户界面的查询器一只
蜘蛛:
蜘蛛(Spider),又叫爬虫,agent什么的,总之就是一个程序用来采集互联网上的网页。采集到的页面越多、速度越快,就越成功。这里涉及的技术难点主要是:
HTML解析与整合如果考虑到多节点并发和吞吐量的要求,还有更麻烦的问题:
Script执行
多格式文件转换(pdf,doc,txt...)
爬行策略预处理器:
主机请求负载均衡(避免造成DoS攻击)
更新策略
同步策略
带宽、CPU、磁盘资源利用率
这里全是干杂活的:
建立索引(URL->Page mapping)涉及的技术难点,除了老一套的并发、更新之类,还有:
分词(中国特色)
Page rank
建立反向索引(倒排)
网页净化查询器:
排重
及其摘要
最后一步就是查询了,步骤很简单:将查询请求分词,检索结果,排序。
涉及技术难点是:
动态摘要Search has been solved, 这么说的确有道理。搜索引擎本质上已经没有什么高深的技术,而是大量琐碎的步骤、优化的集合。自己动手写搜索引擎可能会是一项乏味而缺乏成果的工作。
结果排序
用户缓存