利用Nutch实现分类搜索(一)(加入index plugin)

本文介绍了如何在Nutch中通过创建index-type插件来实现分类搜索功能。作者首先创建了TypeIndexingFilter和TypeNameFactory类,分别用于在文档中添加type字段并根据规则文件确定网页类型。接着,详细讲述了编译和配置过程,包括修改build.xml、添加plugin.xml以及配置nutch-site.xml。最后,提到了针对不同网页类型的规则文件格式,并指出在完成这些步骤后,Nutch将能够根据网页类型进行分类索引。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家在用Google的时候会发现可以按分类来搜索,例如可以搜新闻、博客和购物等等,本系列文章将通过在Nutch中加入插件的方式来实现此功能。本系列文章假设读者对Nutch有一定的了解,能成功编译和简单配置Nutch,并用Nutch提供的Crawl来抓取网页。

本文将讲述如何在Nutch系统中加入我们的index-type plugin。

在利用luke查看抓去的数据时,可以发现默认有十几个fileds,例如title、url和content等等,我们要加入一个type field用来表示网站类型。

在src/plugin目录下创建index-type目录(可以参考index-basic的目录结构),加入如下三个java文件。需要注意的是包的名称要和建立的文件目录结构一致。

TypeNameFactory实现了IndexingFilter接口,Extention Manager将会从此作为入口。

 

TypeNameFactory根据参数indexer.type.includes的值,得到type的种类,而后根据种类读取相应的规则文件,并放入HashMap中。

 

TypeNameSelector对应于一个规则文件,提供filter接口以筛选网址。

 

在lib-regex-filter中加入org.apache.nutch.urlfilter.api.Rule。

 

加入build.xml,用到了lib-regex-filter库,所以要加入引用。

 

加入plugin.xml,注意extention point是"org.apache.nutch.indexer.IndexingFilter",是indexing的公共的接口。

 

还有一件重要的事情,把这个index-type加入编译系统,修改src/plugin/build.xml,添加如下编译入口:

 

至此,在ant package的时候会把我们的index-type编译进去了,查看编译结果能否正确产生index-type.jar。

在成功编译完成后,我们来尝试一下抓取网页,之前需要对conf/nutch-site.xml做修改:

加入indexer.type.includes参数,值为各种网页类型,用“|”分隔多个类型,在plugin.includes参数的值中加入index-type,这样在系统启动时会自动加载index-type plugin。

 

对每一种网页类型,提供一个对应规则文件,下面crawl-urltype-news.txt是针对news设计的规则。

 

另外4中type类似,在此不一一贴出,需要注意的是文件命名规则为crawl-urltype-(YOURWEBTYPE).txt,YOURWEBTYPE和indexer.type.includes参数中的值一一对应,文件放置于conf目录下。

而后设置crawl的起始urls,运行nutch crawl就可以在网络上抓取数据了,利用luke查看最终结果,可以发现多了一个type field,如果抓取的网页足够多的话,可以看到有5个值,分别都定义于indexer.type.includes中。

至此index能够成功根据不同的网页类型将其type field加入结构的索引中了。

 

 

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值