在RH9+J2EE5.0+TOMCAT5.0.28,使用Nutch-0.6完成了企业内部网简单测试,并记录碰到的问题和解决方法

今天的天气真是热死了!没办法,呆在家里吧,有空调凉快些。于是想到了研究Nutch
这是个开源的搜索引擎,现在已列入Apache的Lucene的子项目了。最新版本是0.6(2005年1月)。以前我安装过,没有成功。这次终于成功了,做了简单测试

参考文章来源:
Nutch文档
作者Fenng: http://www.dbanotes.net/archives/2005/01/nutch_aee.html
Apache Nutch Wiki: http://wiki.apache.org/nutch/GettingNutchRunningWithResin

一 系统需要
下面是Nutch文档的说明
1.Java 1.4.x, either from Sun or IBM on Linux is preferred. Set NUTCH_JAVA_HOME to the root of your JVM installation.
2.Apache's Tomcat 4.x.
3.On Win32, cygwin, for shell support. (If you plan to use CVS on Win32, be sure to select the cvs and openssh packages when you install, in the "Devel" and "Net" categories, respectively.)
4.Up to a gigabyte of free disk space, a high-speed connection, and an hour or so.
关于第一项,我也不清楚是说JAVA的J2SE版本还是J2EE版本。上一次我用J2SE的时候就没有成功。但这并不能确定一定和JAVA版本有关。这里我使用的是J2EE5.0(前几天研究什么东西刚下的,顺便拿来用,呵呵)JAVA在LINUX的安装能够参考我以前的BLOG。然后就是设定系统环境变量NUTCH_JAVA_HOME了。
#vi /etc/profile

加入下面内容:
NUTCH_JAVA_HOME="/usr/local/j2ee1.5/jdk"
EXPORT最后加入 NUTCH_JAVA_HOME

第二项安装TOMCAT很简单,下载binary包解压即可。我用的是tomcat5.0.28
第三项我们用的是Linux不用管Windows的配置
第四项预留足够的硬盘空间(G字节级别)。我只搜我的小站,估计也占用不了多少空间^_^

二 安装使用Nutch
1.安装
下载Nutch-0.6.tar.gz
#tar zxvf Nutch-0.6.tar.gz
#mv Nutch-0.6 /usr/local/nutch
测试Nutch
#/usr/local/nutch/bin/nutch
出现几行提示信息,说明安装成功

2.抓取页面
我只做了内部网(Intranet)的测试
在 nutch 目录中创建一个包含该网站顶级网址的文档 urls ,包含如下内容:
http://10.40.x.x/(我的主机的内网网址,这里用我以前架的LAMP测试)

#cd /usr/local/nutch
#touch urls
#vi urls
加入 http://10.40.x.x/ 保存退出

然后编辑conf/crawl-urlfilter.txt 文档,设定过滤信息
+^http://10.40.x.x/
保存退出以后开始抓取了!

#bin/nutch crawl urls -dir lystudio.test -depth 2 -threads 4 >& crawl.log

depth 参数指爬行的深度,这里处于测试的目的,选择深度为 2 ;
threads 参数指定并发的进程 这是设定为 4
只过了2分钟,爬完了(站太小了……)

之后配置 Tomcat (我的 tomcat 安装在 /usr/local/tomcat5) ,

# rm -rf /usr/local/tomcat5/webapps/ROOT*
# cp nutch-0.6.war /usr/local/tomcat5/webapps/ROOT.war
# cd /usr/local/tomcat5/webapps/
# jar xvf ROOT.war
# ../bin/catalina.sh start
浏览器中输入 http://localhost:8080 查看结果(远程查看需要将 localhost 换成相应的IP):

nutch

出现了页面!但是测试发现不能正常搜索页面,并出现以下错误:

500 Servlet Exception
java.lang.NullPointerException
    at net.nutch.searcher.NutchBean.init(NutchBean.java:82)
    .....

去Nutch Wiki找资料,据说是segment文档夹位置的问题。默认的是./segment所以我们应该修改为实际的地址。我的是
/usr/local/nutch/lystudio.test/segment
解决方法是这样描述的:
找到tomcat的ROOT目录下的一个文档:nutch-site.xml

#vi /usr/local/tomcat5/webapps/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>/usr/local/nutch/lystudio.test</value>
  <description>My path to nutch's searcher dir.</description>
</property>
</nutch-conf>

然后重启TOMCAT,终于能够搜索了:

nutch2

至此我的测试已完成。关于中文搜索,以后有时间再做(能够发现,上面页面的中文在Firefox1.0.5下有问题,调整页面编码也没有起作用,应该是Nutch配置中修改吧)。
说明:本人对搜索引擎没有任何研究,这里只是体验一次搜索的乐趣而已^_^