[ 安装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>
</configuration>
注意其中的红色部分,虽然网上资料都说可以不用修改,但是如果出现意味,不妨这里找原因。
[如何进行索引建立]
在完成以上过程以后就可以建立索引了,点击左面上的cygwin的图标,进入命令输入界面(有点像DOS),
输入:cd /cygdrive/d/nutch-0.9
说明:d表示d盘。
输入: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>”部分,应根据自己的设置进行相应修改。
如果出现异常:java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence则是由于在nutch-site.xml文件中出现了中文输入法的标记。
在浏览器中输入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。
然后将下载的文件解压后设置环境变量,例如我的解压地址为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文件即可。