??xml version="1.0" encoding="utf-8" standalone="yes"?> 前几天看到卢亮的 Larbin 一U高效的搜烦引擎爬虫工具 一文提?NutchQ很是感兴趣Q但一直没有时间进行测试研I。趁着假期Q先试一下看看。用搜烦引擎查找了一下,发现中文技术社区对 Larbin 的关注要q远大于 Nutch 。只有一q多前何东在他的竹笋炒肉中对 Nutch q行了一?a >介绍?/p>
Nutch vs Lucene Nutch vs GRUB Nutch vs Larbin Nutch 的早期版本不支持中文搜烦Q而最新的版本(2004-Aug-04 发布?0.5)已经做了很大的改q。相对先前的 0.4 版本Q有 20 多项的改q,l构上也更具备扩展性?.5 版经q测试,对中文搜索支持的也很好?/p>
下面是我的测试过E?/p>
前提条g(q里Linux ZQ如果是 Windows 参见手册)Q?/p>
首先下蝲最新的E_版: 解压~? 试一?nutch 命oQ?/p>
Nutch 的爬虫有两种方式 以本?http://www.dbanotes.net)ZQ先q行一下针对企业内部网的测试?/p>
?nutch 目录中创Z个包含该|站|址的文?urls Q包含如下内容:
然后~辑conf/crawl-urlfilter.txt 文gQ设定过滤信息,我这里只修改了MY.DOMAIN.NAME: q行如下命o开始抓取分析网站内容: depth 参数指爬行的深度Q这里处于测试的目的Q选择深度?2 Q?br />
threads 参数指定q发的进E?q是讑֮?4 Q?/p>
在该命oq行的过E中Q可以从 crawl.log 中查?nutch 的行Z及过E? 之后配置 Tomcat (我的 tomcat 安装?/opt/Tomcat) Q? 览器中输入 http://localhost:8080 查看l果(q程查看需要将 localhost 换成相应的IP)Q?/p>
搜烦试Q?/p>
可以看到QNutch 亦提供快照功能。下面进行中文搜索测? 注意l果中的那个“评分详解”Q是个很有意思的功能(Nutch h一个链接分析模?Q通过q些数据可以q一步理解该法?/p>
考虑到带宽的限制Q暂时不Ҏ个Web爬行的方式进行了试了。值得一提的是,在测试的q程中,nutch 的爬行速度q是不错?相对我的p糕带宽)?/p>
Nutch 目前q不支持 PDF(开发中Q不够完? ?囄 {对象的搜烦?strong>中文分词技?/strong>q不够好Q通过“评分详解”可看出,对中文,比如“数据库管理员”Q是分成单独的字q行处理的。但作ؓ一个开源搜索引擎YӞ功能是可圈可点的。毕竟,主要开发?Doug Cutting 是开?Lucene 的大?/p>
参考信?/p>
Lucene 不是完整的应用程序,而是一个用于实现全文检索的软g库?br />
Nutch 是一个应用程序,可以?Lucene 为基实现搜烦引擎应用?/p>
GRUB 是一个分布式搜烦引擎(参?/a>)。用户只能得到客L工具(只有客户端是开源的)Q其目的在于利用用户的资源徏立集中式的搜索引擎?br />
Nutch 是开源的Q可以徏立自己内部网的搜索引擎,也可以针Ҏ个网l徏立搜索引擎。自?Free)而免?Free)?/p>
"Larbin只是一个爬虫,也就是说larbin只抓取网,至于如何parse的事情则q戯己完成。另外,如何存储到数据库以及建立索引的事?larbin也不提供。E引自q里Q?br />
Nutch 则还可以存储到数据库q徏立烦引?br />
Qd?a >q里
[root@fc3 ~]# export NUTCH_JAVA_HOME=/u01/app/oracle/product/10.1.0/db_1/jdk/jre
[root@fc3 ~]# wget http://www.nutch.org/release/nutch-0.5.tar.gz
[root@fc3 ~]# tar -zxvf nutch-0.5.tar.gz
......
[root@fc3 ~]# mv nutch-0.5 nutch
[root@fc3 nutch]# bin/nutch
Usage: nutch COMMAND
where COMMAND is one of:
crawl one-step crawler for intranets
admin database administration, including creation
inject inject new urls into the database
generate generate new segments to fetch
fetchlist print the fetchlist of a segment
fetch fetch a segment's pages
dump dump a segment's pages
index run the indexer on a segment's fetcher output
merge merge several segment indexes
dedup remove duplicates from a set of segment indexes
updatedb update database from a segment's fetcher output
mergesegs merge multiple segments into a single segment
readdb examine arbitrary fields of the database
analyze adjust database link-analysis scoring
server run a search server
or
CLASSNAME run the class named CLASSNAME
Most commands print help when invoked w/o parameters.
[root@fc3 nutch]#
http://www.dbanotes.net/
# accept hosts in MY.DOMAIN.NAME
+^http://([a-z0-9]*\.)*dbanotes.net/
[root@fc3 nutch]# bin/nutch crawl urls -dir crawl.demo -depth 2 -threads 4 >& crawl.log
......
050102 200336 loading file:/u01/nutch/conf/nutch-site.xml
050102 200336 crawl started in: crawl.demo
050102 200336 rootUrlFile = urls
050102 200336 threads = 4
050102 200336 depth = 2
050102 200336 Created webdb at crawl.demo/db
......
050102 200336 loading file:/u01/nutch/conf/nutch-site.xml
050102 200336 crawl started in: crawl.demo
050102 200336 rootUrlFile = urls
050102 200336 threads = 4
050102 200336 depth = 2
050102 200336 Created webdb at crawl.demo/db
050102 200336 Starting URL processing
050102 200336 Using URL filter: net.nutch.net.RegexURLFilter
......
050102 200337 Plugins: looking in: /u01/nutch/plugins
050102 200337 parsing: /u01/nutch/plugins/parse-html/plugin.xml
050102 200337 parsing: /u01/nutch/plugins/parse-pdf/plugin.xml
050102 200337 parsing: /u01/nutch/plugins/parse-ext/plugin.xml
050102 200337 parsing: /u01/nutch/plugins/parse-msword/plugin.xml
050102 200337 parsing: /u01/nutch/plugins/query-site/plugin.xml
050102 200337 parsing: /u01/nutch/plugins/protocol-http/plugin.xml
050102 200337 parsing: /u01/nutch/plugins/creativecommons/plugin.xml
050102 200337 parsing: /u01/nutch/plugins/language-identifier/plugin.xml
050102 200337 parsing: /u01/nutch/plugins/query-basic/plugin.xml
050102 200337 logging at INFO
050102 200337 fetching http://www.dbanotes.net/
050102 200337 http.proxy.host = null
050102 200337 http.proxy.port = 8080
050102 200337 http.timeout = 10000
050102 200337 http.content.limit = 65536
050102 200337 http.agent = NutchCVS/0.05 (Nutch; http://www.nutch.org/docs/en/bot.html; n
utch-agent@lists.sourceforge.net)
050102 200337 fetcher.server.delay = 1000
050102 200337 http.max.delays = 100
050102 200338 http://www.dbanotes.net/: setting encoding to GB18030
050102 200338 CC: found http://creativecommons.org/licenses/by-nc-sa/2.0/ in rdf of http:
//www.dbanotes.net/
050102 200338 CC: found text in http://www.dbanotes.net/
050102 200338 status: 1 pages, 0 errors, 12445 bytes, 1067 ms
050102 200338 status: 0.9372071 pages/s, 91.12142 kb/s, 12445.0 bytes/page
050102 200339 Updating crawl.demo/db
050102 200339 Updating for crawl.demo/segments/20050102200336
050102 200339 Finishing update
64,1 7%
050102 200337 parsing: /u01/nutch/plugins/query-basic/plugin.xml
050102 200337 logging at INFO
050102 200337 fetching http://www.dbanotes.net/
050102 200337 http.proxy.host = null
050102 200337 http.proxy.port = 8080
050102 200337 http.timeout = 10000
050102 200337 http.content.limit = 65536
050102 200337 http.agent = NutchCVS/0.05 (Nutch; http://www.nutch.org/docs/en/bot.html;
nutch-agent@lists.sourceforge.net)
050102 200337 fetcher.server.delay = 1000
050102 200337 http.max.delays = 100
......
[root@fc3 nutch]# rm -rf /opt/Tomcat/webapps/ROOT*
[root@fc3 nutch]# cp nutch*.war /opt/Tomcat/webapps/ROOT.war
[root@fc3 webapps]# cd /opt/Tomcat/webapps/
[root@fc3 webapps]# jar xvf ROOT.war
[root@fc3 webapps]# ../bin/catalina.sh start
]]>
]]>
Lucene其实是一个提供全文文本搜索的函数库,它不是一个应用Y件。它提供很多API函数让你可以q用到各U实际应用程序中。现在,它已l成为Apache的一个项目ƈ被广泛应用着。这里列Z些已l用Lucene的系l?/p>
Nutch是一个徏立在Lucene核心之上的Web搜烦的实玎ͼ它是一个真正的应用E序。也是_你可以直接下载下来拿q来用。它在Lucene的基上加了网l爬虫和一些和Web相关的东东。其目的是想从一个简单的站内索引和搜索推q到全球|络的搜索上Q就像Google和Yahoo一栗当Ӟ和那些巨人竞争,你得动一些脑{,想一些办法。我们已l测试过100M的网,q且它的设计用在过1B的网上应该没有问题。当Ӟ让它q行在一台机器上Q搜索一些服务器Q也q行的很好?/p>
ȝ来说Q我认ؓLUCENE会应用在本地服务器的|站内部搜烦Q而Nutch则扩展到整个|络、Internet的检索。当然LUCENE加上爬虫E序{就会成为NutchQ这L解应该没错吧
本文来自CSDN博客Q{载请标明出处Qhttp://blog.csdn.net/rokii/archive/2008/03/01/2137450.aspx