试用nutch
今天看站点的log,发现有几个搜索nutch的反向链接过来。其实我只是在java编码规范一文提了一下这个词,这样的结果肯定让前来的朋友倍感失望。 下面将我对nutch的一些试用公布一下,供有兴趣的朋友参阅。需要说明的是,nutch现在没有稳定的release,还在不断地根据反馈进行修改,而且目前还不支持汉语的检索。总而言之,现在这个版本对中国用户而言还不实用。我想,这也应当是一直研究并关注nutch的车东没有写笔记的原因吧。 前几天和车东在msn上谈起,觉得目前搭建网站时实现本站检索的最好的方案,是采用车东基于lucene的开源项目web lucene的软件包。而nutch似乎比较适合于建立垂直搜索引擎网站,至少目前如此,我认为。
1、下载安装 不知为什么,这个网站不能直接访问。我用的是2003-09-18的打包(有兴趣的朋友可从此下载),在Red Hat Linux 8.0+JRE 1.4.1+Tomcat 4.1试用通过。
tar zxvf nutch-2003-09-18.tar.gz cd nutch-2003-09-18 <----命令执行完后所在目录称之为$NUTCH_HOME,仅供描述之用。 ant ant package bin/nutch <---如果一切正常,此时应出现“Usage: nutch COMMAND”等字样
2、试运行脚本说明 这个脚本是cutting在tutorial中说明的整理。脚本中的命令最好通过脚本依次运行,$s1、$s2和$s3三个变量的赋值表达式是一样的,但三个值不相同,这依赖于运行的上下文。我第一次运行时,就犯了弱智的错误,拆开运行,结果出错。:)
初始准备 |
|
|
|
mkdir db |
建立目录存放web database |
|
mkdir segments |
|
|
bin/nutch admin db -create |
建一个新的空的数据库 |
第一轮抓取 |
|
|
|
bin/nutch inject db -dmozfile content.rdf.u8 -subset 3000 |
从DMOZ列表中取得URL并加入数据库 |
|
bin/nutch generate db segments |
根据数据库内容,生成一个抓取列表(fetchlist) |
|
s1=`ls -d segments/2* | tail -1` |
刚才生成的抓取列表放在最后一个目录中,取其名 |
|
bin/nutch fetch $s1 |
利用机器人抓页面 |
|
bin/nutch updatedb db $s1 |
利用抓取结果更新数据库 |
第二轮抓取 |
|
|
|
bin/nutch analyze db 5 |
迭代5次分析页面的链接 |
|
bin/nutch generate db segments -topN 1000 |
将排行前1000个URL生成新的抓取列表 |
|
s2=`ls -d segments/2* | tail -1` |
执行抓取、更新、并迭代2次分析链接 |
|
bin/nutch fetch $s2 |
|
|
bin/nutch updatedb db $s2 |
|
第三轮抓取 |
|
|
|
bin/nutch analyze db 2 |
|
|
bin/nutch generate db segments -topN 1000 |
|
|
s3=`ls -d segments/2* | tail -1` |
|
|
bin/nutch fetch $s3 |
|
|
bin/nutch updatedb db $s3 |
|
|
bin/nutch analyze db 2 |
(为下一次做准备?) |
索引并去重 |
|
|
|
bin/nutch index $s1 |
|
|
bin/nutch index $s2 |
|
|
bin/nutch index $s3 |
|
|
bin/nutch dedup segments dedup.tmp |
|
重启tomcat |
|
|
|
catalina.sh start |
在./segments所在的目录中启动 |
3、脚本的改动与下载 DMOZ的文件太大了,下载不易,如果仅为实验,似乎也没必要从那里选URL。我改了一下脚本,在$NUTCH_HOME目录下建立一个urls.txt文件,里面一行一个打算搜索的网站的URL,nutch将从这个urls.txt中取站点的URL。 脚本可以下载以参考,运行脚本放在$NUTCH_HOME目录下,参考下列命令运行:
sh all.sh
4、提供web检索 前面忙活了半天,只是把网页抓回来、解析了网页并做作了索引。下面说明一下如何利用nutch自己带的jsp程序提供检索服务。
cd $TOMCATHOME/webapps mv ROOT ROOTOLD mkdir ROOT cd ROOT cp $NUTCH_HOME/nutch-2003-09-18.war ./ROOT.war jar xvf ROOT.war cd $NUTCH_HOME $TOMCAT_HOME/bin/shutdown.sh $TOMCAT_HOME/bin/catalina.sh start
此时,如果不出意外,应可以访问了。 我的试用URL是http://cdls.nstl.gov.cn/se/,(其中我把nutch改动了一下,没把它放在ROOT目录下),供参考。此时,不要检索汉字,只能检索英文,如hedong 或lucene什么的。
试用仓促,难免有错,欢迎朋友进行交流。
参考文献: 基于Lucene/XML的站内全文检索解决方案 http://www.chedong.com/tech/weblucene.html
Lucene学习笔记(2) http://hedong.3322.org/archives/000208.html running.sh的脚本 --------------------------------------- #!/bin/bash
mkdir db mkdir segments bin/nutch admin db -create bin/nutch inject db -urlfile urls.txt bin/nutch generate db segments s1=`ls -d segments/2* | tail -1 ` echo $s1 bin/nutch fetch $s1 bin/nutch updatedb db $s1 bin/nutch analyze db 5
bin/nutch generate db segments -topN 100 s2=`ls -d segments/2* | tail -1` echo $s2 bin/nutch fetch $s2 bin/nutch updatedb db $s2 bin/nutch analyze db 2
bin/nutch generate db segments -topN 100 s3=`ls -d segments/2* | tail -1` echo $s3 bin/nutch fetch $s3 bin/nutch updatedb db $s3 bin/nutch analyze db 2
bin/nutch index $s1 bin/nutch index $s2 bin/nutch index $s3
bin/nutch dedup segments dedup.tmp ------------------------------ 
|