Nutch使用调研报告

       这是半年前使用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下载
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的文本文件,文件中写入要抓取网站的顶级网址,即要抓取的起始页。
以我要抓取的网页为例,输入:
注意:最后一个“ /”不能少,否则和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 ,输入“北邮”,出现如下界面,运行成功。
 
 
    五.其他说明
Lucene不是完整的应用程序,而是一个用于实现全文检索的软件库。 Nutch 是一个应用程序,可以以 Lucene 为基础实现搜索引擎应用。
Nutch 是基于 Lucene 的。 Lucene 为 Nutch 提供了文本索引和搜索的 API 。一个常见的问题是;我应该使用 Lucene 还是 Nutch ?最简单的回答是:如果你不需要抓取数据的话,应该使用 Lucene 。常见的应用场合是:你有数据源,需要为这些数据提供一个搜索页面。在这种情况下,最好的方式是直接从数据库中取出数据并用 Lucene API 建立索引。
Nutch 适用于你无法直接获取数据库中的网站,或者比较分散的数据源的情况下使用。
 
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值