nutch应用-安装与使用

阅读更多

原文 http://blog.sina.com.cn/u/5595d514010008io
nutch是一个非常不错的项目,由于最近我需要对一些内部的文档和站点建一个search的站点,所以又开始了nutch的旅程。不过这次是坎坎坷坷, 尽把问题出在了小地方了。当然,也有很久没有再用过nutch了,之前哪次还是一年前的事了。现在的0.8.1变化也是很大。本文所讲述的版本都是基于 0.8.1来讲的。与0.8相比了一下,从抓取和log以及安装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
















    http.agent.name

    HD nutch agent







其它还可选的有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


     

                 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 :

查询一下英文:

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


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

你可能感兴趣的:(Tomcat,OSX,Apache,lucene,Google)