Archive for the ‘nutch’ Category
Friday, November 7th, 2008
有时候使用NUTCH抓取网页的时候,还没运行完成就退出了爬行工作。这时候可能已经抓取了一部分,
可以用以下命令进行索引已经抓取下来的部分:
./nutch updatedb <crawldb> (-dir <segments> | <seg1> <seg2> ...) [-force] [-normalize] [-filter] [-noAdditions]
./nutch invertlinks <linkdb> (-dir <segmentsDir> | <seg1> <seg2> ...) [-force] [-noNormalize] [-noFilter]
./nutch index wdtrade/indexes wdtrade/crawldb/ wdtrade/linkdb wdtrade/segments/segmentdir1 segmentdir2 ...
./nutch dedup wdtrade/indexes/
./nutch readdb wdtrade -stats 查看统计
在nutch-site.xml添加以下配置,
<configuration>
...
<property>
<name>searcher.summary.length</name>
<value>50</value>//默认为20
<description>
The total number of terms to display in a hit summary.
</description>
</property>
...
</configuration>
就可以了.Nutch的默认配置是在nutch-default.xml中设置的,如果您想覆盖它的配置只需在nutch-site.xml中添加相应的配置就好了.
Posted in nutch | No Comments »
Friday, November 7th, 2008
Nutch作为一款刚刚诞生的开源Web搜索引擎,提供了除商业搜索引擎外的一种新的选择。个人、企业都可通过Nutch来构建适合于自身需要的搜索引擎平台,提供适合于自身的搜索服务,而不必完全被动接收商业搜索引擎的各种约束。
Nutch的工作流程可以分为两个大的部分:抓取部分与搜索部分。抓取程序抓取页面并把抓取回来的数据进行反向索引,搜索程序则对反向索引进行搜索回答用户的请求,索引是联系这两者的纽带。图1是对Nutch整个工作流程的描述。
首先需要建立一个空的URL数据库,并且把起始根urls添加到URL数据库中(步骤1),依据URL数据库在新创建的 segment中生成fetchlist,存放了待爬行的URLs(步骤2),根据fetchlist从Internet进行相关网页内容的爬行抓取与下 载(步骤3),随后把这些抓取到的内容解析成文本与数据(步骤4),从中提取出新的网页链接URL,并对URL数据库进行更新(步骤5),重复步骤2-5 直到达到被指定的爬行抓取深度。以上过程构成了Nutch的整个抓取过程,可以用一个循环来对其进行描述:生成→抓取→更新→循环。
当抓取过程完成后,对抓取到的网页进行反向索引,对重复的内容与URL进行剔除,然后对多个索引进行合并,为搜索建立统一的索引库,而后用户可通过由Tomcat容器提供的Nutch用户界面提交搜索请求,然后由Lucene对索引库进行查询,并返回搜索结果给用户,完成整个搜索过程。
Nutch程序采用Java语言编写,其运行环境需要一个Tomcat容器。本文运行环境以最新的j2sdk1.4.2_12及jakarta-tomcat-5.0.28为例。
使用Nutch进行数据抓取
Nutch通过运行网络爬虫工具进行网络内容的抓取,它提供了爬行企业内部网与爬行整个互联网这两种方式。
● 爬行企业内部网
爬行企业内部网(Intranet Crawling)这种方式适合于针对一小撮Web服务器,并且网页数在百万以内的情况。它使用crawl命令进行网络爬行抓取。在进行爬行前,需要对Nutch进行一系列的配置,过程如下:
首先,需要创建一个目录,并且在此目录中创建包含起始根URLs的文件。我们以爬行搜狐网站(http://www.sohu.com)为例进行讲述。
#cd /usr/local/nutch
#mkdir urls
#touch urls/sohu
因此文件urls/sohu的内容为:http://www.sohu.com/。依据爬行网站的实际情况,可继续在此文 件末尾添加其他URL或者在URL目录里添加其他包含URL的文件。需要注意的是,在Nutch0.7的版中不需要创建目录,直接创建包含起始根URL的 文件即可。
接下来,要编辑conf/crawl-urlfilter.txt文件,将文中MY.DOMAIN.NAME部分替换为准备爬行的域名,并去掉前面的注释。因此在本文中进行域名替换后的形式为:
+^http://([a-z0-9]*\.)*sohu.com/
文件conf/crawl-urlfilter.txt主要用于限定爬行的URL形式,其中URL的形式使用正则表达式进行描述。
然后,编辑文件conf/nutch-site.xml,并且必须包含以下内容:
< ?xml version="1.0"?>
< ?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
< configuration>
< property>
< name>http.agent.name< /name>
< value>sohu.com< /value>
< description>sohu.com< /description>
< /property>
< /configuration>
除http.agent.name外,在< configuration> < /configuration>间一般还包括http.agent.description、http.agent.url、 http.agent.email这三个选项。
最后,开始爬行抓取。完成对Nutch的配置后,运行crawal命令进行爬行。在本文中爬行脚本为:
#bin/nutch crawl urls -dir sohu -depth 5 -topN 1000
其中命令行中各参数项含义分别为:dir指定爬行结果的存放目录,此处dir为sohu;depth指定从根URL起将要 爬行的深度,此例depth设定为5;N设定每一层爬行靠前的N个URL,此例N值设定为1000。另外,crawl还有一个参数项:threads,它 设定并行爬行的进程数。在爬行过程中,可通过Nutch日志文件查看爬行的进展状态,爬行完成后结果存放在sohu目录里。
● 爬行整个互联网
爬行整个互联网(Whole-web crawling)是一种大规模网络爬行,与第一种爬行方式相对,具有更强的控制性,使用inject、generate、fetch、updatedb等比较低层次的命令,爬行量大,可能需要数台机器数周才能完成。
首先,需要下载一个包含海量URL的文件。下载完成后,将其拷贝到Nutch主目录,并且解压缩文件。
wget http://rdf.dmoz.org/rdf/content.rdf.u8.gz
#cd /usr/local/nutch
#cp /home/zyhua/content.rdf.u8.gz .
#gunzip content.rdf.u8.gz
content.rdf.u8包含了约三百万个URL,在此仅随机抽取五万分之一的URL进行爬行。同第一种方法一样,首先需要建立包含起始根URL的文件及其父目录。
#mkdir urls
#bin/nutch org.apache.nutch.tools.DmozParser content.rdf.u8 ...
Posted in nutch | No Comments »
Wednesday, October 29th, 2008
试用了好多的中文插件,有CJK,ICTCLAS的还有IK_CAnaylzer的,经过试用测试后,发现最后一个比较好用。CJK基本就是二元分词没有一点意义。本文分两个部分,第一部分是两种插件测试结果的对比,第二部分是如果给nutch增加插件。
第一部分:
================================原文=============================================
他从马上摔下来了。
你马上下来一下。
结合成分子时
薄熙来字词担任商务部长以来,一直兢兢业业。
张华平1995年离开江西鄱阳老家就读于北方工业大学,如今已经是中科院计算所的副研究员,他说ICTCLAS就像是他的孩子一样珍爱;
=================================ICTCLAS==========================================
他 从 马 上 摔 下 来 了 。
你 马上 下来 一下 。
结合 成 分子 时
薄熙来 字 词 担任 商务 部长 以来 , 一直 兢兢业业 。
张华平 1995年 离开 江西 鄱阳 老家 就读 于 北方 工业 大学 , 如今 已经 是 中科院 计算 所 的 副 研究员 , 他 说 ICTCLAS ...
Posted in nutch | No Comments »