最近在学习Nutch搜索引擎框架,由于比较菜,因此我会将学习的内容慢慢记录下来,帮助本身记忆,也方便别人学习,但愿可以与别人碰撞出思想的火花html
Nutch是Apache开源社区下的一个顶级项目,是利用Java编写的一个搜索引擎框架,能够方便企业以及我的搭建本身的搜索引擎(http://lucene.apache.org/nutch)。java
要写学习应用这个框架:咱们须要了解构成搜索引擎所必须的几个子系统: 数据库
网页数据库apache
数据库跟踪网络爬虫要抓取的全部网页和它们的状态,如上一次访问的时间,它的抓取状态信息,刷新间隔,内容校验和,等等。对应于Nutch中的CrawlDB。数组
爬取网页清单网络
网络爬虫按期刷新其Web视图信息,而后下载新的网页(之前没有抓取的)或刷新它们认为已通过期的网页。这些准备爬取的候选网页清单。对应于Nutch中的fetchlist。框架
原始网页数据ide
网页内容从远程网站下载,以原始的未解释的格式在本地存储成字节数组。对应于Nutch中的page content。学习
解析的网页数据fetch
网页内容用适合的解析器进行解析——Nutch为各类流行格式的文档提供了解析器,如HTML,PDF,Open Office和Microsoft Office,RSS等
链接图数据库
对于计算基于连接(link)的网页排序(page rank)值来讲,如PageRank,这个数据库是必须的。对于Nutch记录的每个URL,它会包含一串指向它的其余的URL值以及这些URL关联的锚文本(在HTML文件的锚文本元素中获得)。这个数据库称为LinkDb。
全文检索索引
这是一个传统的倒排索引,基于搜集到的全部网页元数据与抽取到的纯文本内容而创建。它是使用卓越的Lucene库(http://lucene.apache.org/java)来实现的。
附两张nutch工做流程图,参考自:http://blog.sina.com.cn/s/blog_6d0b92d90100w6p7.html