一个不错的nutch使用文档2007-10-26 10:19基本上把思路理清了
一、安装nutch和配置tomcat,注意nutch0.7和0.8的区别,在这里以0.7版本为例
二、抓取网页,建立搜索
1、假设当前目录为nutch目录,建立一个urls文件,内容就是要抓取的网站域名,如http://www.mydomain.com,可以有多个,每行写一个。在试验中发现,只有根域名有时候抓取的内容没有或很少,加入更多的详细URL效果很好,比如http: //www.mydomain.com/users,http://forum.mydomain.com/post/123,http://www.mydomain.com/articles/123 等,越详细越全面越好,我理解是不是这样的话在crawl的时候,depth的值就可以设小一些了。
2、修改conf/crawl-urlfilter.txt,加入过滤URL的规则
3、开始抓取:
#bin/nutch crawl urls -dir crawl.mydomain -depth 10
4、运行Tomcat前的准备,拷贝war文件,参见《nutch研究(二)》
5、到这里基本的搜索就可以用了
三、 索引的更新和维护
1、写一个维护脚本,定时运行,是个好办法
#!/bin/bash
# Set JAVA_HOME to reflect your systems java configuration
export JAVA_HOME=/usr/lib/j2sdk1.5-sun
# Start index updation,只查找最热门的前1000条记录,由此创建新的segment
bin/nutch generate crawl.mydomain/db crawl.mydomain/segments -topN 1000
#得到最新的segment目录名
s=`ls -d crawl.virtusa/segments/2* | tail -1`
echo Segment is $s
bin/nutch fetch $s
bin/nutch updatedb crawl.mydomain /db $s
bin/nutch analyze crawl.mydomain /db 5
bin/nutch index $s
#删除重复记录
bin/nutch dedup crawl.mydomain /segments crawl.mydomain/tmpfile
# Merge segments to prevent too many open files exception in Lucene
#合并成一个新的segment
bin/nutch mergesegs -dir crawl.mydomain/segments -i -ds
s=`ls -d crawl.mydomain/segments/2* | tail -1`
echo Merged Segment is $s
rm -rf crawl.mydomain/index
2、以上是在urls文件内容没有变化的时候采用的办法,如果我加入的新的URL在urls文件里,那么在运行generate以前,要执行下面一命令:
#bin/nutch inject crawl.mydomain/db -urlfile urls
在generate的时候,如果不加topN参数,那么crawl只会去处理新加的或原来由于其它原因没有fetch的url或page,所以我感觉,脚本1和用2修改的脚本交替运行,会有很好的效果。
一、安装nutch和配置tomcat,注意nutch0.7和0.8的区别,在这里以0.7版本为例
二、抓取网页,建立搜索
1、假设当前目录为nutch目录,建立一个urls文件,内容就是要抓取的网站域名,如http://www.mydomain.com,可以有多个,每行写一个。在试验中发现,只有根域名有时候抓取的内容没有或很少,加入更多的详细URL效果很好,比如http: //www.mydomain.com/users,http://forum.mydomain.com/post/123,http://www.mydomain.com/articles/123 等,越详细越全面越好,我理解是不是这样的话在crawl的时候,depth的值就可以设小一些了。
2、修改conf/crawl-urlfilter.txt,加入过滤URL的规则
3、开始抓取:
#bin/nutch crawl urls -dir crawl.mydomain -depth 10
4、运行Tomcat前的准备,拷贝war文件,参见《nutch研究(二)》
5、到这里基本的搜索就可以用了
三、 索引的更新和维护
1、写一个维护脚本,定时运行,是个好办法
#!/bin/bash
# Set JAVA_HOME to reflect your systems java configuration
export JAVA_HOME=/usr/lib/j2sdk1.5-sun
# Start index updation,只查找最热门的前1000条记录,由此创建新的segment
bin/nutch generate crawl.mydomain/db crawl.mydomain/segments -topN 1000
#得到最新的segment目录名
s=`ls -d crawl.virtusa/segments/2* | tail -1`
echo Segment is $s
bin/nutch fetch $s
bin/nutch updatedb crawl.mydomain /db $s
bin/nutch analyze crawl.mydomain /db 5
bin/nutch index $s
#删除重复记录
bin/nutch dedup crawl.mydomain /segments crawl.mydomain/tmpfile
# Merge segments to prevent too many open files exception in Lucene
#合并成一个新的segment
bin/nutch mergesegs -dir crawl.mydomain/segments -i -ds
s=`ls -d crawl.mydomain/segments/2* | tail -1`
echo Merged Segment is $s
rm -rf crawl.mydomain/index
2、以上是在urls文件内容没有变化的时候采用的办法,如果我加入的新的URL在urls文件里,那么在运行generate以前,要执行下面一命令:
#bin/nutch inject crawl.mydomain/db -urlfile urls
在generate的时候,如果不加topN参数,那么crawl只会去处理新加的或原来由于其它原因没有fetch的url或page,所以我感觉,脚本1和用2修改的脚本交替运行,会有很好的效果。