Nutch使用调研报告

Nutch使用调研报告nbsp nbsp nbsp nbsp nbsp nbsp 这是半年前使用 Nutch 的时候写的 本文讲述了如何搭建一个可运行的 Nutch 系统 Nutch 是个开源的建立搜索引擎的项目 功能很强大 有时间去研究研究还是很好的 一 Nutch 的安装 nbsp nbsp nbsp nbsp nbsp nbsp Nutch 的安装比较简单 下面介绍在 Linux 下的安装步骤 在 Windows 下也能运行 不过先得安装 cygwin 一个在 windows 环境下模拟 Linux 的软件 具体安装步

       这是半年前使用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”文件,出现如下安装界面:
Nutch使用调研报告
      
2.     点击“下一步”
Nutch使用调研报告
      
3.     假定你已经从ftp上下载了cygwin的安装镜像(见cygwin的下载),选择“install from Local Directory”。否则选择“install from internet”(不推荐)。然后点击“下一步”
 
Nutch使用调研报告
4.     选择安装路径,比如我装在“C:/cygwin”,点击“下一步”
 
Nutch使用调研报告
5.     选择本地镜像路径,就是你下载的cygwin的安装镜像的路径。点击“下一步”
 
Nutch使用调研报告
6.     安装向导显示出所要安装的内容列表,用户可以根据自己的实际需要来决定安装哪些程序。点击循环箭头图标后面的文字,可以更改安装的方式,常用的方式有Default(表示只安装缺省的安装项)、Install(表示安装全部程序,空间要求较大)、Reinstall(表示重新安装程序)。推荐选择“Install”方式,一步到位,以免后扰,点击“下一步”后,就开始正式的安装了
  
Nutch使用调研报告
7.     最后出现如下所示的窗口,点击 “完成”后,Cygwin安装完毕。
   
Nutch使用调研报告
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 :

换成

   

searcher.dir
   

Your_crawl_dir_path
 
Your_crawl_dir_path
指刚才抓取网页时网页保存的文件夹,比如我的就是:
D:/nutch/mydir
(所有的文章,帮助上都有这一点,但是经过我的实践证明,第
4
点可以省略)
5.

/Tomcat/conf/Catalina/localhost
下新建立一个
xml
文件
,
该文件名跟你
nutch
文件夹名一样
.
例如
:
我的
nutch
的文件夹名为
nutch-0.7
我就建立一个
nutch-0.7.xml
文件
.
用记事本打开它加入以下文字
:
       
其中
my_nutch_path

nutch
的安装目录,比如我的为:
D:/nutch/nutch-0.7
 (只要完成第一步,则第四,五步都可以省略)
6. 最后在浏览器中输入 http://localhost:8080 查看结果(远程查看需要将 localhost 换成相应的IP):
Nutch使用调研报告
7.    输入查询关键字,查询结果:(比如输入“北邮”,按“搜索”按钮)
Nutch使用调研报告
 
结果出现乱码。不过不要紧,这不是nutch的问题,而是Tomcat不能正常显示中文的问题,我们只需修改一下Tomcat的配置就行了:
打开tomcat/conf下的server.xml文件,将其中的Connector部分改成如下形式即可:(红色部分为添加的)

 enableLookups=”false”
 redirectPort=”8443″
acceptCount=”100″  
  connectionTimeout=”20000″
disableUploadTimeout=”true”
   
URIEncoding=”UTF-8″ useBodyEncodingForURI=”true” />
 
 
重新启动
Tomcat
,输入“北邮”,出现如下界面,运行成功。
Nutch使用调研报告
 
 
    五.其他说明

Lucene不是完整的应用程序,而是一个用于实现全文检索的软件库。 Nutch 是一个应用程序,可以以 Lucene 为基础实现搜索引擎应用。
Nutch 是基于 Lucene 的。 Lucene 为 Nutch 提供了文本索引和搜索的 API 。一个常见的问题是;我应该使用 Lucene 还是 Nutch ?最简单的回答是:如果你不需要抓取数据的话,应该使用 Lucene 。常见的应用场合是:你有数据源,需要为这些数据提供一个搜索页面。在这种情况下,最好的方式是直接从数据库中取出数据并用 Lucene API 建立索引。
Nutch 适用于你无法直接获取数据库中的网站,或者比较分散的数据源的情况下使用。
 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224290.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午12:16
下一篇 2026年3月17日 下午12:16


相关推荐

  • openclaw有没有小白本地部署的方法?

    openclaw有没有小白本地部署的方法?

    2026年3月13日
    2
  • mysql索引详解「建议收藏」

    一、MySQL三层逻辑架构MySQL的存储引擎架构将查询处理与数据的存储/提取相分离。下面是MySQL的逻辑架构图:一、对比InnoDB与MyISAM1、存储结构MyISAM:每个MyISAM在磁盘上存储成三个文件。分别为:表定义文件、数据文件、索引文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD(MYData)。索引文件的扩展名是.MYI(MYIndex)。InnoDB:所有的表都保存在同一个数据文件中(也可能是多个

    2022年4月18日
    55
  • android 游戏引擎_最简单的游戏引擎

    android 游戏引擎_最简单的游戏引擎随着Android系统的使用越来越广泛,了解一下Android平台下的游戏引擎就非常有必要。而同时因为基于Intelx86的移动设备越来越多,我也非常关注支持x86的移动游戏引擎。然而就目前为止游戏引擎的数量已经非常之多,每个引擎都有不同的特征、价格、成熟度等。通过一些调研之后,我发现有非常多的游戏引擎可用于开发运行在android移动设备端的游戏,其中有些还支持x86系统,另外还有些通过简单的修

    2026年1月27日
    3
  • string转double java_Java String转double

    string转double java_Java String转doubleJavaString 转 double1JavaS 转 double 的介绍我们可以使用 Double parseDouble 方法在 Java 中将 String 转换为 double 2JavaString 转 double 的应用场景如果必须对包含双数的字符串执行数学运算 则通常使用它 每当我们从文本字段或文本区域获取数据时 输入的数据都会作为字符串接收 如果输入的数据为 double 则需要将字

    2026年3月19日
    2
  • setAccessible(true)用法及意义

    setAccessible(true)用法及意义实际开发中 setAccessibl 具体的用处主要有两处 作用于方法上 method setAccessibl true publicstatic throwsExcept Useru newUser Classclazz u getClass Methodm clazz getDeclaredM

    2026年3月17日
    2
  • python 匹配文本全角转半角字符「建议收藏」

    python 匹配文本全角转半角字符「建议收藏」在对文本进行处理的时候经常会遇见要对括号和标点进行匹配常见的英文(半角)符号如()直接用正则匹配即可但是遇见全角字符(中文括号、标点),直接用正则匹配会存在问题:因为编码通常为为utf8,若直接匹配,中文括号的3字节编码会和一些中文的字节编码重复,产生意想不到的结果若用decode转为unicode编码,则可避免产生错误结果,但也无法直接用正则匹配到经过试验,发现一个看上去

    2022年7月15日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号