- 浏览: 1185327 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (350)
- Ajax研究 (2)
- javascript (22)
- struts (15)
- hibernate (12)
- spring (8)
- 我的生活 (28)
- jsp (2)
- 我的随笔 (84)
- 脑筋急转弯 (1)
- struts2 (2)
- ibatis (1)
- groovy (1)
- json (4)
- flex (20)
- Html Css (5)
- lucene (11)
- solr研究 (2)
- nutch (25)
- ExtJs (3)
- linux (6)
- 正则表达式 (2)
- xml (1)
- jetty (0)
- 多线程 (1)
- hadoop (40)
- mapreduce (5)
- webservice (2)
- 云计算 (8)
- 创业计划 (1)
- android (8)
- jvm内存研究 (1)
- 新闻 (2)
- JPA (1)
- 搜索技术研究 (2)
- perl (1)
- awk (1)
- hive (7)
- jvm (1)
最新评论
-
pandaball:
支持一下,心如大海
做有气质的男人 -
recall992:
山东分公司的风格[color=brown]岁的法国电视[/co ...
solr是如何存储索引的 -
zhangsasa:
-services "services-config ...
flex中endpoint的作用是什么? -
来利强:
非常感谢
java使用json所需要的几个包 -
zhanglian520:
有参考价值。
hadoop部署错误之一:java.lang.IllegalArgumentException: Wrong FS
接上面一篇,今天来用一个例子来详细讲解下nutch当中到底是如何自定义插件的。
1.首先在src/plugin/,新建一个文件夹,这个文件夹我们姑且就叫(urlfilter-urllength
),从名字就可以看出我们这个自定义的插件的作用是什么了。
1.我们这个类实现了URLFilter.当然要实现其没有实现的方法了。public class UrlLengthFilter implements URLFilter。
2.下面贴出详细的源码看下:
public class UrlLengthFilter implements URLFilter
{
private static final Log LOG = LogFactory.getLog(UrlLengthFilter.class);
private Configuration conf;
@Override
public String filter(String inUrl) {
LOG.info("begin UrlLengthFilter is .....");
String urlFilter = "";
if (inUrl == null || inUrl == "") return urlFilter;
String url = inUrl.toLowerCase();
// from first character after 'http://' or first character
int start = url.indexOf("http://");
start = start < 0 ? (url.indexOf("https://") == 0 ? 8 : 0) : 7;
url = url.substring(start);
int end = url.indexOf("/");
end = end < 0 ? url.length() : end;
// return the first character to the first or end
urlFilter = url.substring(0, end);
LOG.info("urlFilter is " + urlFilter);
return urlFilter;
}
@Override
public Configuration getConf() {
return conf;
}
@Override
public void setConf(Configuration conf) {
this.conf = conf;
}
}
2.当然要有plugin.xml这个.xml的作用就不用说了不吧!很明显就是加载我们所写的类(实现某一个功能)。代码还是贴出来分析下:
<?xml version="1.0" encoding="UTF-8"?>
<plugin
id="urlfilter-urllength"
name="Suffix URL Filter"
version="1.0.0"
provider-name="xp.com">
<requires>
<import plugin="nutch-extensionpoints"/>
</requires>
<extension id="com.xp.se.test.urllength"
name="Nutch URL Length Filter"
point="org.apache.nutch.net.URLFilter
">
<implementation id="UrlLengthFilter" class="com.xp.se.urllength.UrlLengthFilter"/>
</extension>
</plugin>
分析:
a、第一句就知道吧,xml声明的编码格式和所使用的版本。
b、id : 这个插件的id。
name : 插件的的作用是什么。
version : 插件的版本。
provider-name : 是谁提供的(源)。
c、nutch-extensionpoints
: 这里面是ntuch自带的几个插件。我们在这里是把它现引进来。
d、extension : 扩展,顾名思义就是说:把我们自己写好的插件交给nutch来用。相信读过nutch源码的都很清楚还有一个extension-point.它们之间有什么关系。不过不知道也没关系,跟着来做就行了。回头从网上google下就可以明白的。
e、id : 是所定义一个名称
name: 这个扩展的作用是什么。功能是什么。看了这个后可以一目了然啊。
point : 是从nutch那个扩展点集成的。这个point是要和nutch-extensionpoints/plugin.xml中的某个id相一致
的。
implementation : 我们自己写的类。
3.通常还有一个build.xml.这个是用来编译的。
4.在nutch-site中加上我们写的这个插件吧,跑下试试。
<property>
<name>plugin.includes</name>
<value>protocol-http|urlfilter-(regex|urllength
)|parse-(text|html|js)|index-(basic|anchor)|query-(basic|site|url)|response-(json|xml)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)</value>
<description>Regular expression naming plugin directory names to
include. Any plugin not matching this expression is excluded.
In any case you need at least include the nutch-extensionpoints plugin. By
default Nutch includes crawling just HTML and plain text via HTTP,
and basic indexing and search plugins. In order to use HTTPS please enable
protocol-httpclient, but be aware of possible intermittent problems with the
underlying commons-httpclient library.
</description>
</property>
细心的朋友已经发现我们在上面已经加上了。没有发现的话,再细致看下....
总结 :
自己可以跟踪下。肯定进来。比如我们在url中写一个url : http://www.163.com/ 通过我们写的这个会变成 : www.163.com 。程序就会终止了。写这个目的是现理清这个nutch的插件的加载流程和学习如何
自定义一个自己的插件。我们可以写很多的plugin,都可以通过上面所讲的这种方法来实现。
发表评论
-
nutch-1.2结合hadoop分布式搜索
2011-07-13 10:50 2664nutch-1.2结合hadoop分布式搜索。 1、网上关于 ... -
nutch-1.x分布式索引指定
2011-07-04 17:15 12801、nutch-1.x中在crawl.java中。最后有这么一 ... -
在nuthc中加入中文分词
2011-05-15 11:41 605nutch实用的分词是默认的,对中文支持的不是很好。 网上有 ... -
nutch1.2中加入中文分词以及搜索错误解决
2011-03-02 12:15 1435在nutch当中加入中文分词。这里我使用的IK_Analyze ... -
使用ant编译时错误:Specify at least one source--a file or resource
2011-02-22 11:12 2462将命令环境切换到Nutch目录下,执行ant命令。出现如下错误 ... -
readdb导致fetch job中断的问题
2011-02-16 13:39 1659Nutch readdb命令可以用来统计目前crawldb库里 ... -
Nutch fetch job中时间的分配比例
2011-02-16 13:38 1335下面是nutch fetch job中map shuffle ... -
nutch UI 多台机子部署有关jetty配置servlet的问题
2010-01-18 17:35 2469我们jetty是一个小型的web服务器,可以嵌入到程序当中去, ... -
nutch中plugin.folders的配置
2009-12-21 18:07 2424今天在公司做nutch的调试时,犯了一个低级的错误,在这里记录 ... -
把另外的一个项目加入了nutch中来
2009-12-20 23:59 1092周末在家闲的慌,把在公司搞的nutch拿回来在家里试着做了下, ... -
nutch plugin详细分析
2009-12-16 18:06 1393当某个插件需要被加载时, Nutch 会加载所有插件的相关接口 ... -
nutch plugin的流程以及如何自定义plugin
2009-12-16 18:04 1994PluginRepository 是plugin的入口,保存了 ... -
如何读取nutch抓取数据
2009-12-16 17:43 3607如何读取nutch抓取数据 1.首先nutch的配置已经在博 ... -
Nutch1.0 Ui启动在tomcat中的配置
2009-12-07 14:09 1354<!-- @pa ... -
nutch如何才能抓取到动态的url
2009-11-25 15:27 5350http://www.tianya.cn/new/Tianya ... -
配置完成nutch容易出现的错误
2009-11-25 11:50 24831.1.2 运行crawl报错Job failed Ex ... -
在eclipse中如何配置nutch1.0
2009-11-25 11:44 1432<1>: 首先从http://apache.eto ... -
nutch的基本工作流程理解
2009-11-21 00:17 1899(一):Nutch的工作流程: Crawdb、l ... -
cygwin配置说明
2009-11-21 00:15 2362开始,一步一步来:了解Cygwin的人都知道,就是到 : ht ... -
第一次使用nutch
2009-11-19 23:13 1257Nutch 是一个基于Lucene开发的诞生不久的开放源代码( ...
相关推荐
举例来说,如果我们想要创建一个插件,用于根据搜索词推荐相关网页,我们需要定义一个新的扩展点,可能是一个QueryEnhancer接口,然后实现这个接口,提供推荐算法。这样,在查询处理阶段,Nutch会调用我们的插件,...
通过具体实例,读者可以更好地理解Nutch插件是如何在实际场景中发挥作用的,以及如何根据自身需求开发和集成插件。 #### 五、在Eclipse中使用Ant构建插件 虽然Nutch插件可以通过命令行工具构建,但在Eclipse中使用...
本文将详细介绍Nutch插件机制的核心概念、工作原理以及如何开发和使用插件。 #### 二、Nutch插件机制的重要性 Nutch之所以采用插件机制,主要有以下三个原因: 1. **可扩展性**:通过插件,Nutch允许用户根据自己...
接下来,我们将详细介绍如何创建一个新的Nutch插件。 1. **使用Eclipse创建Maven项目**:首先,需要在Eclipse环境中创建一个新的Maven项目。Maven是一个项目管理和综合工具,可以帮助管理项目的构建过程。 2. **...
资源中urls.txt是我nutch单步执行过程的种子文件,里面的ppt主要讲解nutch单步执行流程,并获取每次单步执行的结果文件,对文件进行分析,同时ppt还讲解了nutch的插件的基础知识,不是很详细,但是可以作为参考。...
为了更好地理解Nutch插件系统的实际应用,我们可以考虑一个具体的例子——添加一个新的文档解析器。 假设我们需要为Nutch添加一个用于解析PDF文档的插件。首先,我们定义一个扩展点`PdfParser`,然后创建一个实现了...
Nutch中文分词插件的编写与配置,由于Internet的迅猛发展,使得用户查找信息犹如大海捞针,而搜索引擎则能帮用户很好的解决这个问题。 Nutch是用java语言开发的,基于Lucene的完整的网络搜索引擎,并采用插件机制进行...
“工具”标签则暗示这份资料可能包含了一些辅助工具或者插件的使用,比如如何使用Nutch与Solr或Elasticsearch集成来构建搜索引擎,或者如何使用Nutch的命令行工具进行数据处理。 压缩包中的“Nutch.pdf”可能是...
总的来说,Nutch 1.2 是一个功能强大的网络爬虫框架,这个预配置的项目可以帮助开发者快速启动自己的网络数据采集任务,只需要补充缺失的插件即可开始你的网络爬虫之旅。通过深入学习和实践,你将能够掌握如何高效地...
通过阅读此教程,你可以了解如何搭建 Nutch 爬虫环境,编写自定义插件,以及进行定制化抓取和索引。 总结来说,Nutch 是一个强大的开源网络爬虫工具,借助 Hadoop 实现了大规模的网页抓取和搜索功能。学习和使用 ...
Nutch 是一个开源的搜索引擎项目,它主要用于抓取和索引网页内容,为用户提供搜索功能。在Nutch的工作流程中,"快照"扮演着重要角色。快照是指在某个时间点对网页内容的捕获,它记录了网页当时的原始信息,这对于...
- 在`nutch/plugin`目录下创建一个名为`index-self`的新目录,用于存放即将创建的插件文件。 - 该目录将包含`build.xml`和`plugin.xml`两个文件,它们分别用于构建和描述插件的基本信息。 **4. 配置构建脚本** - ...
Nutch是一个开源的、用Java编写的搜索引擎工具,它允许用户构建和部署自己的搜索引擎。通过学习和应用Nutch,用户可以理解搜索引擎的工作原理,透明度较高,因为其源代码是开放的,任何人都可以查看其排序算法是如何...
Nutch 0.9 提供了一个灵活的抓取框架,允许用户自定义抓取策略。它使用 URL管理器来跟踪已抓取和待抓取的URL,并且能够根据抓取策略决定何时以及如何抓取新页面。 4. **链接分析**: Nutch 使用了 PageRank 算法...
总结来说,Nutch是一款强大的开源搜索引擎工具,适用于大数据环境下的Web抓取和索引。学习Nutch不仅能够了解搜索引擎的工作原理,还能提升在分布式计算领域的实践能力。这份高清带书签的教程,将是你学习Nutch的最佳...
总结,Nutch是一个强大且灵活的网络爬虫工具,对于需要进行大规模网页抓取和搜索的项目来说,是一个理想的解决方案。通过学习和实践这个入门教程,你将能够熟练地运用Nutch进行数据采集和分析。