Nutch 使用之锋芒初试

Nutch 使用之锋芒初试nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp Nutch 使用之锋芒初试 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 工欲善其事 必先利其器 经过前文的 细解 我们已经完成了 Nutch 在 Windows 中的安装 接下来就让我们通过锋芒初试 来亲自体验一下 Nutch 的强大功能吧 nbsp nbsp nbsp Nutch 的爬虫抓取网页有两种方式 一种

                                                 Nutch 使用之锋芒初试
                           
  “工欲善其事,必先利其器。”经过前文的“细解”,我们已经完成了Nutch在Windows中的安装。接下来就让我们通过锋芒初试,来亲自体验一下Nutch的强大功能吧!
   
  Nutch的爬虫抓取网页有两种方式,一种方式是Intranet Crawling,针对的是企业内部网或少量网站,使用的是crawl命令;另一种方式是Whole-web crawling,针对的是整个互联网,使用inject、generate、fetch和updatedb等更底层的命令。 本文将以使用Nutch为笔者在CSDN处的个人专栏(



http://blog.csdn.net/zjzcl)文章内容建立搜索功能为例,来讲述Intranet Crawling的基本使用方法(假设用户电脑系统已安装好JDK、Tomcat和Resin,并做过相应的环境配置)。
   
  1、设置Nutch的环境变量

  在Windows系统的环境变量设置中,增加NUTCH_JAVA_HOME变量,并将其值设为JDK的安装目录。比如笔者电脑中JDK安装于D:/j2sdk1.4.2_09,因此将NUTCH_JAVA_HOME的值设为D:/j2sdk1.4.2_09。
   
  2、Nutch抓取网站页面前的准备工作

  (1)在Nutch的安装目录中建立一个名为url.txt的文本文件,文件中写入要抓取网站的顶级网址,即要抓取的起始页。笔者在此文件中写入如下内容:
   
  







http://blog.csdn.net/zjzcl
   
  (2)编辑conf/crawl-urlfilter.txt文件,修改MY.DOMAIN.NAME部分:
   
  # accept hosts in MY.DOMAIN.NAME
  +^http://blog.csdn.net/zjzcl
   
  3、运行Crawl命令抓取网站内容
   
  双击电脑桌面上的Cygwin图标,在命令行窗口中输入:
   
  cd /cygdrive/i/nutch-0.7.1
   
  不明白此命令含义的读者请参见前《细解》一文,然后再输入:
   
  bin/nutch crawl url.txt -dir crawled -depth 3 -threads 4 >& crawl.log
   
  等待大约2分多钟后,程序运行结束。读者会发现在nutch-0.7.1目录下被创建了一个名为crawled的文件夹,同时还生成一个名为crawl.log的日志文件。利用这一日志文件,我们可以分析可能遇到的任何错误。另外,在上述命令的参数中,dir指定抓取内容所存放的目录,depth表示以要抓取网站顶级网址为起点的爬行深度,threads指定并发的线程数。
   
  4、使用Tomcat进行搜索测试
   
  (1)将tomcat/webapps下的ROOT文件夹名改成ROOT1;
  (2)将nutch-0.7.1目录的nutch-0.7.1.war复制到tomcat/webapps下,并将其改名为ROOT;
  (3)打开ROOT/WEB-INF/classes下的nutch-site.xml文件,修改成如下形式:
   
  

  


























  

  


   
    

searcher.dir

    

I:/nutch-0.7.1/crawled

   


  



  
  其中的“

I:/nutch-0.7.1/crawled
”部分,读者应根据自己的设置进行相应修改。
  (4)启动Tomcat,打开浏览器在地址栏中输入:


http://localhost:8080,如图1所示:

Nutch 使用之锋芒初试
    
  在文本框中输入关键字,就可以进行搜索了。不过用户在使用时会发现,对于英文单词的搜索一切正常,而当要搜索中文词语时会出现乱码。其实这个问题是Tomcat设置的问题,解决办法是修改tomcat/conf下的server.xml文件,将其中的Connector部分改成如下形式即可:
   
  

               enableLookups=”false” redirectPort=”8443″ acceptCount=”100″

               connectionTimeout=”20000″ disableUploadTimeout=”true”
               URIEncoding=”UTF-8″ useBodyEncodingForURI=”true” />
              
  现在我们可以对中文词汇进行搜索了。如在搜索框中输入“李开复”,点击搜索按钮后,会搜索到笔者之前写的两篇文章《从李开复换门庭开启的缝隙中窥视——试探Google的几招成功“秘诀”》与 《从国内首例禽流感假疫苗大案说起——有感于李开复
<做最好的自己>
中的诚信观》
,如图2所示:
   
Nutch 使用之锋芒初试
   
  如果点击show all hits按钮,则会列出更多相关的搜索结果了。   
   
  5、使用Resin进行搜索测试
   
  由于笔者最近工作中经常使用Resin,因此在Tomcat上测试完毕后也想在Resin上测试一把,未曾想遇到了各种意想不到的情况。下面就将所遇到的问题以及解决方法列出,以供遇到相同问题的读者参考。
   
  (1)将nutch-0.7.1目录的nutch-0.7.1.war复制到resin-3.0.17/webapps下;
  (2)打开resin-3.0.17/conf下的resin.conf文件,把
   
  

   
  下面的内容改成:
   
  

          

   

   

   

  





   
  (3)打开resin-3.0.17/webapps/nutch-0.7.1/WEB-INF/classes下的nutch-site.xml文件,修改成如下形式:
   
  

  

































  

  


   
    

searcher.dir

    

I:/nutch-0.7.1/crawled

   


  



  
  其中的“

I:/nutch-0.7.1/crawled
”部分,读者应根据自己的设置进行相应修改。
 
  (4)启动Resin,打开浏览器在地址栏中输入



http://localhost:8080后,在Nutch的搜索框中输入关键字,点击“搜索”按钮会出现如图3所示的错误。
 
Nutch 使用之锋芒初试
 
  查看resin-3.0.17/logs下的stdout.log文件,会发现报空指针的错误。查阅相关资料后才知,原来Resin没有使用Xerces作为其默认的XML解析器,而Nutch又恰好用到了Xerces,因此应该在Resin的配置文件中明确告之要使用Xerces。打开resin-3.0.17/conf下的resin.conf文件,在

标签的上面加上两行内容:

 
  

  

   
  同时,还要将tomcat/common/endorsed下的xercesImpl.jar、xmlParserAPIs.jar复制到resin-3.0.17/lib目录中。重新启动Resin,打开









http://localhost:8080并输入要搜索的关键字后,这时终于不再出现空指针错误了,但是却出现了如图4所示的错误。
   
Nutch 使用之锋芒初试
    
  这个错误出得有些莫明其妙,同样的内容在Tomcat里安然无恙,但是在Resin中却会出现找不到/zh/include/footer.html文件的异常。没办法只好手工将resin-3.0.17/webapps/nutch-0.7.1/include下的footer.html文件复制到resin-3.0.17/webapps/nutch-0.7.1/zh/include目录中。重启Resin进行搜索,终于又见到了久违的如前图2所示的搜索结果了。
   
  6、总结
   
  Nutch目前对中文分词的支持还不够完善,从测试的结果来看它是将中文词语分成单独的字进行处理的。但是瑕不掩瑜,作为一个开源的搜索引擎项目,Nutch的功能不仅可圈可点,而且从对它源代码的解读中可以使我们对搜索引擎的运行机理和相关算法有了更加深入的了解。此外,Nutch优秀的设计架构使得用户能够非常容易的开发自己的插件,以实现个性化的需求与功能。相信随着Nutch不断的改进和成熟,在不久的将来,基于Nutch的个人搜索引擎以及行业垂直搜索引擎会不断的涌现出来。









参考资料:
1、

Nutch tutorial
2、Getting Nutch Running With Windows
3、Getting Nutch Running With Resin  
4、
Nutch 初体验之二

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

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

(0)
上一篇 2026年3月19日 下午2:16
下一篇 2026年3月19日 下午2:16


相关推荐

  • 有监督学习VS无监督学习「建议收藏」

    有监督学习VS无监督学习「建议收藏」事先先说明一下:标签就是指的分好的类别,指明标签就是告诉计算机,这个样本属于哪一类。对于聚类的话,是事先类别都没定义好,但是类别的个数一定要告诉计算机这个问题可以回答得很简单:是否有监督(supervised),就看输入数据是否有标签(label)。输入数据有标签,则为有监督学习,没标签则为无监督学习。首先看什么是学习(learning)?一个成语就可概括:举一反三。此处以高考为例,高考的题目在上

    2022年5月25日
    51
  • origin作图图例老是消失_origin画的图不见了

    origin作图图例老是消失_origin画的图不见了记录origin画图遇到的问题及其软件bug解决画图问题如何快速绘制框架画图问题如何快速绘制框架本例子以origin2021版本问题的提出:导入数据之后没有上框和右框(如图)目的:入Excel数据之后直接有上框和右框(也就是能不能设置这么一个模板),如图:解决方法方法一点击图片,找到我红色框的地方,点击即可(据说这种方法在2020版本及其以上即可支持)效果图:方法二:点击查看–显示–框架效果图:PS:美中不足的是,该方法不可以撤销…

    2026年2月12日
    3
  • DML 语句

    DML 语句DML 数据操作语言 对表格中的数据进行操作 insert update delete insert 插入 insertinto 表名 字段 1 字段 2 字段 3 values 值 1 值 2 值 3 语法 1 字段名称全写 insertintoem 字段 1 字段 2 values 值 1 值 2 例如 insertintoem id name

    2026年3月26日
    3
  • java输出windows系统日志_闲聊Windows系统日志

    java输出windows系统日志_闲聊Windows系统日志title:”闲聊Windows系统日志”date:2021-02-22T18:59:49+08:00draft:truetags:[‘windows’]author:”dadigang”author_cn:”大地缸”personal:”http://www.real007.cn”闲聊Windows系统日志2018-07-302018-07-3017:38:54阅读4.2K0\…

    2025年8月29日
    8
  • Integer 和 int 的区别

    Integer 和 int 的区别一 int 和 Integer 的区别 Integer 是 int 的包装类 int 是 java 中的基本数据类型 Integer 对象必须是实例化后才能使用 而 int 变量不需要实例化 Integer 实际是对象的引用 当 new 一个 Integer 时 实际上是生成一个指针指向此对象 而 int 则是直接存储数据值 Integer 的默认值是 null int 的默认值是 0

    2026年3月18日
    2
  • 《Linux Device Drivers》 第十七章 网络驱动程序——note

    《Linux Device Drivers》 第十七章 网络驱动程序——note

    2022年1月1日
    59

发表回复

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

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