安装nutch还是比较简单的,从apache的网站上去下哪个66M之大的包包:
http://lucene.apache.org/nutch/release/
另外,你还可以使用Luke来验证你的index,并通过它来进行深入的查询:
http://www.getopt.org/luke/
我还特别的安装一个tomcat来让大家上nutch来“google一把”的感觉,这样你也需要下一个tomcat(其实只要是一个servlet容器就好):
http://tomcat.apache.org/download-55.cgi
简单的说明一下各文件:
apache-tomcat-5.5.20.tar.gz
nutch-0.8.1.tar.gz
lukeall-0.7.jar
另外,我的操作系统是Mac OSX 10.4.8,JDK版本为1.5.0_07。
我把tomcat和nutch解到了~/japp目录中:
/Users/HD/japp/apache-tomcat-5.5.20
/Users/HD/japp/nutch-0.8.1
首先需要简单的设置一些环境变量,我在home的.profile中加入了以下设置:
export JAVA_HOME=/usr
export NUTCH_HOME=/Users/HD/japp/nutch-0.8.1
好了,开始我们的正式工作罢。
首先,把我们要抓取的网站的起始地址加入到nutch中去:
>> CODE
cd $NUTCH_HOME
mkdir urls
echo 'http://lucene.apache.org/nutch/' > urls/nutch
你可以建一个目录,目录中的每一个文件中的每一行都是一个站点的“起抓页”。nutch会从这些url中开抓的。 :)
同时你需要告诉nutch,有哪些url被适配时,抓取到索引库中来。编辑conf目录中的crawl-urlfilter.txt文件,将MY.DOMAIN.NAME换为你想被抓进来的站点的名字,比如我是这样写的:
>> CODE
# accept hosts in MY.DOMAIN.NAME
+^http://([a-z0-9]*\.)*apache.org/
+^http://([a-z0-9]*\.)*woodpecker.org.cn/
这样,所有可以适配上这两个规则的网页都会被抓取下来。
最后还需要将抓取网页时提交的一些信息,必须要配置的属性是http.agent.name。设置的文件是conf中的nutch-site.xml:
>> CODE
<?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>HD nutch agent</value>
</property>
</configuration>
其它还可选的有http.agent.url、http.agent.email、http.agent.version。设置好这些属性,对于被抓取的站点来讲是十分友好的行为,所以最好设置。
我们可以开抓了:
>> CODE
cd $NUTCH_HOME
bin/nutch crawl urls -dir crawl -depth 5 -topN 50
我们需要使用crawl命令进行抓取。urls参数是存放抓取起始点的目录。-dir参数说明了抓取后的存储目录。-depth参数说明了抓取的层级深度。而-topN说明了一个层级抓取网页的数量。
执行这个命令需要一点时间,结束时可以看到这样的输出:

我们可以看到index被增加到了crawl/indexes目录中。还可以看看存储数据的目录结构:

你可以看到index目录中的文件,如果没有这些,说明设置有了问题了。
双击一下lukeall-0.7.jar,我们来打开索引:

还可以看看我们抓到了什么:

当然,你还可以在库中进行查询:

不过要注意,查询条件的输入还不能良好的支持中文,不知是osx的问题还是lukeall的问题。 :(
一切都验证好了,我们来建一个搜索的站点罢。
>> CODE
cd ~/japp/apache-tomcat-5.5.20/webapps
rm -rf *
mkdri ROOT
cd ROOT
cp $NUTCH_HOME/nutch-0.8.1.war .
jar xvf nutch-0.8.1.war
rm nutch-0.8.1.war
因为偶们会用中文查,所以需要把URI Encode改为UTF-8。编辑tomcat的conf目录中的server.xml,找到8080 port的connector段加入URIEncoding="UTF-8",如下:
>> CODE
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
URIEncoding="UTF-8" />
来启动我们搜索站点罢:
>> CODE
cd $NUTCH_HOME
~/japp/apache-tomcat-5.5.20/bin/startup.sh
打开浏览器,定位到 http://localhost:8080 :

查询一下英文:

查询一下中文,我自己索引了一个中文站 :)

除了右上角出现了中文的乱码,其它好像都还不错哟。 :)
插入表情