今天看站点的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