这是半年前使用Nutch的时候写的.本文讲述了如何搭建一个可运行的Nutch系统.Nutch是个开源的建立搜索引擎的项目,功能很强大,有时间去研究研究还是很好的.
一.Nutch的安装
Nutch的安装比较简单,下面介绍在Linux下的安装步骤:(在Windows下也能运行,不过先得安装cygwin,一个在windows环境下模拟Linux的软件,具体安装步骤见 二.Cygwin的安装与使用,安装完之后的使用方法同Linux环境下使用)
下载:
可以去Apache的官方网页http://www.apache.org/dyn/closer.cgi/lucene/nutch/ 下载最新版的Nutch,目前最新版是nutch-0.7.1,45M大小。
解压:
下载的是一个压缩包,比如:nutch-0.7.tar.gz,由后缀名我们知道这是一个先经过打包再经过压缩的文件,所以在Linux下运行以下命令以解压:
gunzip nutch-0.7.tar.gz //解压缩,得到文件:nutch-0.7.tar
tar –xvf nutch-0.7.tar //解包,得到目录nutch-0.7
如果不出错的话,应该得到一个目录nutch-0.7,里面包含了nutch所有的源代码,文档等。
安装辅助软件(运行环境):
Nutch是用java写的一个开源项目,所以要使它正常运行必须安装JDK(也为了能修改nutch),Java 1.4.x以上版本,设置环境变量NUTCH_JAVA_HOME为java虚拟机的安装目录。
此外,还必须安装Apache's Tomcat 4.x 以上版本。
最后,想得到较好的运行效果,必须有至少1G的剩余空间和一个网速较快的网络。
运行以测试安装结果:
设置NUTCH_JAVA_HOME的值设为java的安装目录,即JAVA_HOME的值。(在JDK1.5中不设也能运行)
改变当前工作区为nutch-0.7(即:刚才的解包目录),运行以下命令:
bin/nutch
如果一切正常的话,会显示nutch的命令说明,比如:
Uage: nutch Commad ……
二.Cygwin的安装(使用Linux环境的用户可以直接阅读第三点)
cygwin 简介
(略)
cygwin下载
1. 下载setup.exe文件,然后运行选择“install from internet”,然后程序会自动从网上下载并安装。(考虑到网速问题,不推荐此方法)
2. 从北邮的ftp下载,地址:ftp:// openware.byr.edu.cn/mirro/cygwin
cygwin 安装
1. 双击“setup.exe”文件,出现如下安装界面:
2. 点击“下一步”
3. 假定你已经从ftp上下载了cygwin的安装镜像(见cygwin的下载),选择“install from Local Directory”。否则选择“install from internet”(不推荐)。然后点击“下一步”
4. 选择安装路径,比如我装在“C:\cygwin”,点击“下一步”
5. 选择本地镜像路径,就是你下载的cygwin的安装镜像的路径。点击“下一步”
6. 安装向导显示出所要安装的内容列表,用户可以根据自己的实际需要来决定安装哪些程序。点击循环箭头图标后面的文字,可以更改安装的方式,常用的方式有Default(表示只安装缺省的安装项)、Install(表示安装全部程序,空间要求较大)、Reinstall(表示重新安装程序)。推荐选择“Install”方式,一步到位,以免后扰,点击“下一步”后,就开始正式的安装了
7. 最后出现如下所示的窗口,点击“完成”后,Cygwin安装完毕。
8. 安装完毕,在桌面上生成一个快捷方式:cygwin,双击它就能运行程序了。
三.nutch 使用
总体上Nutch可以分为2个部分:抓取部分和搜索部分。抓取程序抓取页面并把抓取回来的数据做成反向索引,搜索程序则对反向索引搜索回答用户的请求。抓取程序和搜索程序的接口是索引。两者都使用索引中的字段。实际上搜索程序和抓取程序可以分别位于不同的机器上。
网页的抓取主要分为2种:Intranet crawling和 Whole-web crawling。从名字可以很容易明白他们抓取的范围。一般Whole-web crawling对配置要求高(面对海量数据,抓取数据和存储空间都至关重要),花费时间长(几天甚至是几周),我们没有必要做这样的测试。所以我已抓取我们学校内部网页为例子,来做一个测试。
抓取前的准备工作
输入需要抓取的网站地址
在Nutch的安装目录中建立一个名为myurl的文本文件,文件中写入要抓取网站的顶级网址,即要抓取的起始页。
以我要抓取的网页为例,输入:
http://www.bupt.edu.cn/
注意:最后一个“/”不能少,否则和conf/crawl-urlfilter.txt中的内容不匹配,不能运行。
更改配置文件 crawl-urlfilter.txt
编辑conf/crawl-urlfilter.txt文件,修改MY.DOMAIN.NAME部分,把它替换为你想要抓取的域名(地址),即把
# accept hosts in MY.DOMAIN.NAME
+^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/
修改为:
# accept hosts in MY.DOMAIN.NAME
+^http://([a-z0-9]*\.)* bupt.edu.cn /
运行 crawl命令抓取网站内容
运行的命令
按3.1做好抓取前的准备,接着就可以使用crawl命令抓取网页。Crawl命令的可选参数如下:
·-dir dirnames 设置保存所抓取网页的目录.
·-depth depth 表明抓取网页的层次深度
·-delay delay 表明访问不同主机的延时,单位为“秒”
·-threads threads 表明需要启动的线程数
实际使用
改变当前工作区为nutch安装目录,运行以下命令行:
bin/nutch crawl myurl -dir mydir -depth 2 -threads 4 >&logs/logs1.log
在上述命令的参数中,myurl就是刚才我们创建的那个文件,存放我们要抓取的网址,dir指定抓取内容所存放的目录,depth表示以要抓取网站顶级网址为起点的爬行深度,threads指定并发的线程数。最后的logs/logs1.log表示把显示的内容保存在文件logs1.log中,以便分析程序的运行情况。
实际运行时间:5分钟。如果抓取成功的话,那么在目录mydir下有3个目录:
1. db
2. segments
3. index
查看抓取结果
1. 查看所抓取的网页数和链接数:
bin/nutch readbd mydir/db stats
mydir是刚才抓取网页时的保存文件夹。
显示结果:
Nuber of pages: 1240
Nuber of links: 2598
可能发生的错误:
1. 如果mydir在运行前已存在,则运行时将报错:mydir already exist。建议先删除这个目录,或者指定其他的目录存放抓取的网页。
四.在Tomcat中运行查看结果(在Windows下部署成功,但是在LInux下总是出错)
如果已经抓取成功,则可以在Tomcat上部署了,具体步骤如下:
1. 复制mydir/segments文件夹到../tomcat5/bin/下
2. 删除/Tomcat/webapps/ROOT文件夹。
3. 复制nutch-0.7.war到到../tomcat5/webapps/下,改名为ROOT.war并解开(不解开也可以,Tomcat运行时将自动解开)
4. 修改/webapps/nutch/WEB-INF/classes/nutch-site.xml :
将
<nutch-conf>
</nutch-conf>
换成
<nutch-conf>
<property>
<name>searcher.dir</name>
<value>Your_crawl_dir_path</value>
</property>
</nutch-conf>
Your_crawl_dir_path指刚才抓取网页时网页保存的文件夹,比如我的就是:D:\nutch\mydir
(所有的文章,帮助上都有这一点,但是经过我的实践证明,第4点可以省略)
5. 在\Tomcat\conf\Catalina\localhost下新建立一个xml文件,该文件名跟你nutch文件夹名一样.例如:我的nutch的文件夹名为nutch-0.7我就建立一个nutch-0.7.xml文件.用记事本打开它加入以下文字:
<Context path="my_nutch_path" debug="5" privileged="true" docBase="nutch-0.7"/>
其中my_nutch_path为nutch的安装目录,比如我的为:D:\nutch\nutch-0.7
(只要完成第一步,则第四,五步都可以省略)
6. 最后在浏览器中输入 http://localhost:8080 查看结果(远程查看需要将 localhost 换成相应的IP):
7. 输入查询关键字,查询结果:(比如输入“北邮”,按“搜索”按钮)
结果出现乱码。不过不要紧,这不是nutch的问题,而是Tomcat不能正常显示中文的问题,我们只需修改一下Tomcat的配置就行了:
打开tomcat\conf下的server.xml文件,将其中的Connector部分改成如下形式即可:(红色部分为添加的)
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false"
redirectPort="8443"
acceptCount="100"
connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="UTF-8" useBodyEncodingForURI="true" />
重新启动Tomcat,输入“北邮”,出现如下界面,运行成功。
五.其他说明
Nutch VS Lucene
Lucene不是完整的应用程序,而是一个用于实现全文检索的软件库。Nutch 是一个应用程序,可以以 Lucene 为基础实现搜索引擎应用。
Nutch 是基于 Lucene的。Lucene为 Nutch 提供了文本索引和搜索的API。一个常见的问题是;我应该使用Lucene还是Nutch?最简单的回答是:如果你不需要抓取数据的话,应该使用Lucene。常见的应用场合是:你有数据源,需要为这些数据提供一个搜索页面。在这种情况下,最好的方式是直接从数据库中取出数据并用Lucene API建立索引。
Nutch 适用于你无法直接获取数据库中的网站,或者比较分散的数据源的情况下使用。
分享到:
相关推荐
nutch使用&Nutch;入门教程 pdf
Nutch 是开源的,可以建立自己内部网的搜索引擎,也可以针对整个网络建立搜索引擎
Nutch入门使用文档,教大家如何部署Nutch爬虫
nutch的使用方法,里面有具体的nutch代码函数,命令,对于基本的网页爬取是够了
Nutch性能测试报告(单机模式),分析了Nutch的单机运行性能测试情况。
mp3文件信息解析。支持ID3标准的V1和V2.3.可以再nutch中使用。宁外附上nutch的parse-html的一些定制。(图片,关键字匹配)
nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据
Linux下Nutch分布式配置 使用:分布式爬虫、索引、Nutch搜索本地数据、Nutch搜索HDFS数据。
网络爬虫调研报告 一 调研背景 项目中要对指定的网络资源进行抓取、存储、分类、索引、并提供检索服务。充当全文检索数据库的是Apache组织下的开源项目Lucene 检索工具,而Lucene只是个搜索引擎工具,它提供API接口...
资源名称:Nutch相关框架视频教程资源目录:【】Nutch相关框架视频教程1_杨尚川【】Nutch相关框架视频教程2_杨尚川【】Nutch相关框架视频教程3_杨尚川【】Nutch相关框架视频教程4_杨尚川【】Nutch相关框架视频教程5_...
Nutch 是一个开源的、Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎...8.3.1使用Nutch API....53 8.3.2使用OpenSearch API...55 8.4 nutch的应用前景.57 附录一: nutch的相关网站......58 附录二: 参考文献..58
eclipse配置nutch,eclipse配置nutch
学习nutch 源码解读 轻松入门 搭建自己的nutch搜索引擎
Nutch开发入门 Nutch安装和使用 Nutch二次开发 很不错
Tika使用多种现有的开源内容解析项目来实现从多种格式的文件中提取元数据和结构化文本,Gora支持把大数据持久化到多种存储实现,Crawler Commons是一个通用的网络爬虫组件。 大数据这个术语最早的引用可追溯到Nutch...
Nutch使用总结 信息检索 建立索引 一个让入学者自己搭建搜索引擎的东西
然后以开发一个基于 Nutch 的实际应用为例向读者展示如何使用 Nutch 开发自己的搜索引擎。在该示例中,首先带领读者开发一个作为 Nutch 爬虫抓取的目标网站,目标网站将被部署在域名为 myNutch.com 的服务器上。然后...
1.1 Nutch 基本原理 1.1.1 Nutch 基本组成 1.1.2 Nutch 工作流程 1.2 Nutch 流程详解 1.2.1 Nutch 数据流程 1.2.2 Nutch 流程分析
3、 nutch是使用svn进行源代码管理的。 4、 lucene、nutch、hadoop,在搜索界相当有名。 5、 ant构建之后,生成runtime文件夹,该文件夹下面有deploy和local文件夹,分别代表了nutch的两种运行方式。 6、 nutch和...
Nutch搜索引擎·Nutch简单应用(第3期) 1.1 Nutch 命令详解 1.2 Nutch 简单应用