`
damoqingquan
  • 浏览: 47819 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

nutch 安装及使用中若干常见问题

阅读更多

最近在搭建nutch搜索平台,期间遇到许多问题,在此与各位分享。由于具体安装过程网上已经有详细的解释,再次不必多言,只简单提一下大致过程,以期各位有宏观上的认识。

    nutch0.8安装:http://blogger.org.cn/blog/more.asp?name=lhwork&id=19244

    nutch0.9安装:http://www.cnblogs.com/dev2dev/archive/2006/02/01/324638.html

    nutch0.9使用:http://www.cnblogs.com/dev2dev/articles/326394.html

    安装过程概览如下,我会在每个步骤下将可能出现的问题做自己的说明。

   [ 安装cygwin ]

   为什么需要安装cygwin 呢?因为nutch中网页“爬行”与索引的建立都使用unix的shell命令(请看nutch主目录下的bin目录),而大多数的朋友都是使用windows,所以我们需要在window上来模拟unix环境,cygwin正好完成了这个工作。它使得我们可以在windows平台上使用shell命令。

   什么是cygwin:http://baike.baidu.com/view/3968.html?wtp=tt

   安装完成后,点击cygwin主目录下的cygwin.bat可以自动完成必须的环境变量的配置,不用我们动手了。

   [安装nutch ]

   虽然说是安装nutch,实际上nutch并不需要什么安装,我们将它下来下来以后解压就可以了。

   然后在Windows系统的环境变量设置中,增加NUTCH_JAVA_HOME变量,并将其值设为JDK的安装目录。

   [对具体网站进行爬行和索引]

在这里我们需要对几个文件进行修改,以使得我们的程序能够对具体的网站进行爬行与建立索引。下面以对中山大学的站点进行处理为例。

    中山大学的主页为:http://www.sysu.edu.cn

   1.对conf/crawl-urlfilter.txt文件的修改。

     # accept hosts in MY.DOMAIN.NAME
       +^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/

        改为:
  # accept hosts in MY.DOMAIN.NAME
  +^http://www.sysu.edu.cn

      说明:+^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/这是一个用正则表达式,匹配允许爬行的网页。上面我们将其设定为唯一的具体网页了。实际上,改成+^http://([a-z0-9]*\.)*就能匹配所有的网页了。
   2.在nutch主目录下(其它位置也可以,不过在运行命令时候需要指定到具体的位置)url.txt。这是指在nutch0.9下面,如果是在nutch0.8下面,需要建立一个urls的文件夹,然后在下面家里url.txt文件。

    在url.txt中输入你要爬行和建立索引的网址。

    3.虽然很少有文章提到,但是实际上许多网页对爬虫进行了一定的限制,只有遵循一定协议的爬虫才能进行爬行,因此需要配置爬行的协议。所以需要对config\nutch-site.xml进行修改,修改后的类容如下。

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
<name>http.agent.name</name>
<value>www.sysu.edu.cn</value>
<description>My Search Engine</description>
</property>

<property>
<name>http.agent.description</name>
<value></value>
<description>Further description of our bot- this text is used in
the User-Agent header. It appears in parenthesis after the agent name.
</description>
</property>

<property>
<name>http.agent.url</name>
<value></value>
<description>A URL to advertise in the User-Agent header. This will
appear in parenthesis after the agent name. Custom dictates that this
should be a URL of a page explaining the purpose and behavior of this
crawler.
</description>
</property>

<property>
<name>http.agent.email</name>
<value></value>
<description>An email address to advertise in the HTTP 'From' request
header and User-Agent header. A good practice is to mangle this
address (e.g. 'info at example dot com') to avoid spamming.
</description>
</property>

</configuration>

    注意其中的红色部分,虽然网上资料都说可以不用修改,但是如果出现意味,不妨这里找原因。

   [如何进行索引建立]

    在完成以上过程以后就可以建立索引了,点击左面上的cygwin的图标,进入命令输入界面(有点像DOS),

   输入:cd /cygdrive/e/nutch-0.9

   说明:e表示e盘。

   输入:bin/nutch crawl url.txt -dir crawled -depth 3 -threads 4 >& crawl.log

   说明:url.txt为你上面建立的url 文件,如果是nutch0.8那,应该是urls.

               crawled为你的索引目录。

              3代表爬行深度。

               4代表线程数。

               crawl.log是日志文件。

   待执行结束后,我们查看日志文件,最后一行出现finished: crawl字样代表索引建立成功。接下来就可以进行查询了。

   [如何进行搜索]

    将nutch目录下的.war文件拷贝到tomcat目录下(如果你还没有安装tomcat请先安装),然后改名为nutch.war。

     打开ROOT\WEB-INF\classes下的nutch-site.xml文件,修改成如下形式:
   
  <?xml version="1.0"?>
  <?xml-stylesheet type="text/xsl" href="nutch-conf.xsl"?>

  <!-- Put site-specific property overrides in this file. -->

  <nutch-conf>
   <property>
    <name>searcher.dir</name>
    <value>I:/nutch-0.7.1/crawled</value>
   </property>
  </nutch-conf>
  
 其中的“<value>I:/nutch-0.7.1/crawled</value>”部分,应根据自己的设置进行相应修改。

      在浏览器中输入http://localhost:8080/nutch即可进入查询主页面进行查询了。

   [查询页面乱码问题]

   这是tomcat的问题,对Tomcat 的 server.xml 文件(在conf文件夹下)的 connnector:

  <Connector port="8080"
    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" redirectPort="8443" acceptCount="100"
    connectionTimeout="20000" disableUploadTimeout="true" 
    URIEncoding="UTF-8" useBodyEncodingForURI="true" /> 

   其中 URIEncoding="UTF-8" useBodyEncodingForURI="true" 是需要新增的。

[程序修改后的重组问题]

nutch能方便地根据自己的需要进行修改,例如我们要根据添加自己的分词工具,则修改相关的java文件即可,例如,我们要修添加JE分词,只需修改\src\java\org\apache\nutch\analysis下的NutchDocumentAnalyzer.java文件后重新编译即可。

    那么如何重新组装呢?大家注意在nutch主目录下有一个build.xml文件,它就是重组时候所用的,不过光有它还不行,因为运行他还需要一个工具。那就是ant。

   下载地址:http://ant.apache.org/

   然后将下载的文件解压后设置环境变量,例如我的解压地址为E:\apache-ant\apache-ant-1.7.1。我就设置ANT_HOME为E:\apache-ant\apache-ant-1.7.1。并在path变量的后面添加%ANT_HOME%\bin。进入到命令行输入ant如果不提示无法识别命令,那么ant安装配置成功了。

    从命令行进入到build.xml所在的目录,输入ant命令。即可开始重新编译,如果没有提示错误,那说明你的源码修改是正确的,将在改目录下产生一个build文件目录,进入该文件目录将nutch-0.9.job文件拷贝,返回上级目录粘贴,替换掉原来的nutch-0.9.job文件即可。

2
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics