王朝网络
分享
 
 
 

Nutch使用调研报告

王朝other·作者佚名  2007-08-10
宽屏版  字体: |||超大  

这是半年前使用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 适用于你无法直接获取数据库中的网站,或者比较分散的数据源的情况下使用。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有