2007年3月16日星期五

试用Nutch建立搜索引擎

Nutch 是一个开放源代码(open-source)的web搜索引擎。

尽管Web搜索是漫游Internet的基本要求,但是现有web搜索引擎的数目却在下降,并且这很有可能进一步演变成为一个公司垄断了几乎所有的web搜索为其谋取商业利益,这显然不利于广大Internet用户。


Nutch 为我们提供了这样一个不同的选择,相对于那些商用的搜索引擎, Nutch 作为开放源代码搜索引擎将会更加透明, 从而更值得大家信赖。

下面是我在Windows 2003 上试用 Nutch 的情况:

准备工作


  1. 下载Nutch-0.7.1,释放到C:/nutch-0.7.1
  2. 下载安装 Cygwin ,以模拟运行Linux的东西。
  3. 安装JDK 1.4.2 或以上,我安装的 JDK 1.5.0 ,我的在 C:\JDK
  4. 安装 Tomcat ,我的在 C:\Tomcat,修改conf/server.xml以便可以正确处理中文,

    1. 以下红色部分是新加入的
    2. <Connector port="8080"
      maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
      enableLookups="false" redirectPort="8443" acceptCount="100"
      debug="0" connectionTimeout="20000"
      disableUploadTimeout="true"
      URIEncoding="UTF-8" useBodyEncodingForURI="true" />
    3. 把Nutch-0.7.1.war解压到webapps/ROOT中

  5. 在C:/nutch-0.7.1下建立一个文本文件:urls.txt,在文件中输入: http://lucene.apache.org/nutch/
  6. 修改C:/nutch-0.7.1/conf/crawl-urlfilter.txt,把文件中的MY.DOMAIN.NAME替换成apache.org

到此,准备工作完成,开始给 http://lucene.apache.org/nutch/ 做索引,双击桌面的 Cygwin 图标,运行 Cygwin ,在此中依次输入如下命令


  1. cd C:/nutch-0.7.1 (切换目录)
  2. export NUTCH_JAVA_HOME=C:/JDK/jre (设置系统参数)
  3. bin/nutch crawl urls.txt -dir crawl.test -depth 3 >& crawl.log (开始建立索引,建立的索引将被放到C:/nutch-0.7.1/crawl.test目录下,建索引过程中的log信息将放到C:/nutch-0.7.1/crawl.log文件中)
  4. 等待索引建立完成 (1.7G 的cpu 256MB内存 执行了10分钟)
  5. 启动tomcat。
  6. 打开浏览器,在地址栏中输入: http://localhost:8080/ ,看看结果如果。

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

java.lang.NullPointerException
org.apache.nutch.searcher.NutchBean.init(NutchBean.java:96)
.....

去Nutch Wiki找资料,据说是segment文件夹位置的问题。默认的是./segment所以我们应该修改为实际的地址。我的是
C:/nutch-0.7.1/crawl.test
解决方法是这样描述的:
找到tomcat的ROOT目录下的一个文件: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>C:\\nutch-0.7.1\\crawl.test</value>
<description>description>

</property>
</nutch-conf>

然后重启TOMCAT