本文共 2704 字,大约阅读时间需要 9 分钟。
本文尝试使用 Nutch 0.8.1 来为几个指定的网站建立全文索引,且不使用 Hadoop 提供的分布式能力,只是简单地在一台单独的机器上完成索引工作。如果需要使用 Nutch 的分布式能力,需要.
约定 Nutch 部署后的目录结构如下:
/home/hys/nutch-deployed /nutch-0.8.1 (Nutch 0.8.1 installation goes here) /nutch-0.8.1-web (Nutch web module for searching goes here)1. Setting environment variable(s)
$ export NUTCH_JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun-1.5.0.08$ export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun-1.5.0.08$ export NUTCH_HOME=/home/hys/nutch-deployed/nutch-0.8.1
注:环境变量 $NUTCH_HOME 并非必须的,我增加此变量只是为了行文方便。
2. Basic configurations
解开 Nutch 的下载包后在 conf 目录下可以发现很多配置文件,就本文简单的应用来说,只有 nutch-default.xml 和 nutch-site.xml 需要关注。在这里, nutch-default.xml 是各项默认值的设定,非常不推荐直接修改该文件。如果有某些项需要重新设置,那么就在 nutch-site.xml 重新设置它,对于相同项, nutch-site.xml 会覆盖 nutch-default.xml 。因为 nutch-site.xml 是 final resource ,而 nutch-default.xml 是 default resource 。 Nutch 是基于 Hadoop 框架构建的,所以它也继承了 Hadoop 的这种配置方法。
$ cd $NUTCH_HOME$ vi conf/nutch-site.xml
以下是我的配置清单:
<property>
<name>http.agent.name</name> <value>NovaCrawler</value></property><property>
<name>http.agent.description</name> <value>A crawler from Tinova for testing purpose</value></property><property>
<name>http.agent.url</name> <value>http://huang.yunsong.net</value></property><property>
<name>http.agent.email</name> <value>huangyunsong at gmail dot com</value></property><property>
<name>http.agent.version</name> <value>1.0</value></property>
4. Specifying root URL(s) for crawling
在 $NUTCH_HOME 下创建一个文件夹,该文件夹中包含一些文本文件,每个文本文件都包含一个爬行起始地址。这里的文件夹名、文件名皆任意。
$ mkdir urls$ cd urls$ vi hysblog
http://huang.yunsong.net
$ vi hlyy
http://www.openow.net/home.nv
5. Setting filters for crawling
配置文件是 $NUTCH_HOME/conf/crawl-urlfilter.txt ,在该文件中分别使用 +/- 符号来表示 accept/skip ,文件中有详细的注释说明。对于本文来说,仅仅需要接受来自 www.openow.net 和 huang.yunsong.net 的页面,如下:
+^http://www.openow.net/
+^http://huang.yunsong.net/
6. Crawling
Nutch 提供了一个很好的脚本 nutch ,它的 crawl 指令就是用来执行爬行的。
$ bin/nutch crawl urls -dir crawl
以上指令中:
urls 就是在第4步中创建的用来包含爬行起点的目录-dir crawl (可选)将会把爬行结果放到 $NUTCH_HOME/crawl/ 目录中。注,这个目录必须不存在。还有三个可选参数:
-depth 3 (可选)指定爬行深度为3。-topN 50 (可选)指定在每一级上最多攫取的页面数为50-threads 2 (可选)指定并发线程数为27. Recrawling (Updating index library)
// TODO
8. Searching
Nutch 默认提供了一个 web module for searching ,虽然很简陋,不过能用、能说明问题。当然,可以自己重新开发一个 web module 来构建 web 搜索接口。
将 nutch-0.8.1.war 文件解压到目录 nutch-0.8.1-web ,然后在 tomcat 的配置目录 conf/Catalina/localhost 中增加一个配置文件 nutch.xml ,其内容为:
<Context docBase="/home/hys/nutch-deployed/nutch-0.8.1-web" reloadable="true" />
启动 tomcat 即可。注意:
1,因为默认情况下,该 Nutch web module 会认为索引库位于 ./crawl ,所以启动 tomcat 时需要切换当前目录到 $NUTCH_HOME2,别忘记在 server.xml 的 Connector 定义部分加上 URIEncoding="UTF-8"$ cd $NUTCH_HOME$ /opt/tomcat-5.5.20/bin/startup.sh
好了,打开 http://localhost:8080/nutch 试试搜索吧。
转载地址:http://fjavi.baihongyu.com/