第一章首先概要的介绍搜索引擎的总体结构和基本模块,然后会介绍其中的最核心的模块:全文检索的基本原理。为了尽快普及搜索引擎开发技术,本章介绍的搜索引擎结构可以采用开源软件实现。为了通过实践来深入了解相关技术,本章中会介绍相关的开发环境。本书介绍的搜索技术使用Java编程语言实现,之所以没有采用性能可能会更好的C/C++,是希望读者不仅能够快速完成相关的开发任务,而且可以把相关实践作为一个容易上手的游戏。另外,为了集中关注程序的基本逻辑,书中的Java代码去掉了一些错误和异常处理,实际可以运行的代码可以在本书附带的光盘中找到。在以后的各章中会深入探索搜索引擎的每个组成模块。
你知道百度、Google是如何获取数以亿计的网页并且实时更新的吗?你知道在搜索引擎领域人们常说的Spider是什么吗?本章将全面介绍网络爬虫的方方面面。读完之后,你将完全有能力自己写一个网络爬虫,随意抓取互联网上任何感兴趣的东西。 既然百度、Google这些搜索引擎巨头已经帮我们抓取了互联网上的大部分信息,为什么还要自己写爬虫呢?因为深入整合信息的需求是广泛存在的。在企业中,爬虫抓取下来的信息可以作为数据仓库多维展现的数据源,也可以作为数据挖掘的来源。甚至有人为了炒股,专门抓取股票信息。既然从美国中情局到普通老百姓都需要,那还等什么,让我们快开始吧。 网络爬虫的基本操作是抓取网页。那么如何才能随心所欲地获得自己想要的页面?这一节将从URL开始讲起,然后告诉大家如何抓取网页,并给出一个使用Java语言抓取网页的例子。最后,要讲一讲抓取过程中的一个重要问题:如何处理HTTP状态码。
随着互联网技术的发展以及风起云涌的云计算浪潮。爬虫技术也逐渐向着分布式方向发展。比如,Google的爬虫就是使用成千上万台小型机和微机进行合作,完成分布式抓取工作的。分布式技术不仅可以解决IT运营的成本,还可以解决爬虫效率问题,尤其是当今云计算的热潮,更把分布式推向了极致。设计分布式爬虫,把抓取任务分布到不同的节点主要是为了抓取性能与可扩展性,也可以使用物理分布的爬虫系统,让每个爬虫节点抓取靠近它的网站。例如,北京的爬虫节点抓取北京的网站,上海的爬虫节点抓取上海的网站,电信网络中的爬虫节点抓取托管在电信的网站,联通网络中的爬虫节点抓取托管在联通的网站。
Nutch的爬虫抓取网页有两种方式,一种方式是Intranet Crawling,针对的是企业内部网或少量网站,使用的是crawl命令;另一种方式是Whole-webcrawling,针对的是整个互联网,使用inject、generate、fetch和updatedb等更底层的命令。本文将以使用Nutch为笔者在CSDN处的个人专栏文章内容建立搜索功能为例,来讲述Intranet Crawling的基本使用方法(假设用户电脑系统已安装好JDK、Tomcat和Resin,并做过相应的环境配置)。