摘要:转载自http://wrong1111.iteye.com/blog/186388原文地址:http://www.onjava.com/pub/a/onjava/2006/10/04/what-is-java-content-repository.html?page=4 JSR-170把自己定义为一个能与内容仓库互相访问的,独立的,标准的方式。同时它也对内容仓库做出了自己的定义,它认为内容仓库是一个高级的信息管理 系统,该系统是是传统的数据仓库的扩展,它提供了诸如版本控制、全文检索,访问控制,内容分类、访问控制、内容事件监视等内容服务。Java Content Repository API(J
阅读全文
03 2013 档案
摘要:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。Zookeeper是hadoop的一个子项目,其发展历程无需赘述。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在某些...
阅读全文
摘要:现在再次回顾企业搜索引擎开发之连接器connector(三)中UML图示中的servlet类ConnectorManagerServlet类与ConnectorManagerGetServlet类均为抽象类,继承自HttpServlet类它们均提供了抽象方法,供子类具体实现,本身的servlet的override方法里面调用了各自的抽象方法,这种处理方式类似于template method模式,在它们的子类override方法里面有些通过调度处理器来执行具体逻辑,具体源码我这里不粘贴出来了这些servlet实现类部分用到了Manager类型的实例(ProductionManager实例),这个
阅读全文
摘要:回顾Context类的start方法,还有一部分是启动调度器的方法/** * Start up the Scheduler. */ private void startScheduler() { traversalScheduler = (TraversalSchedu...
阅读全文
摘要:本文分析一下ConnectorInterfaces类的代码,该类主要提供了访问连接器的相关依赖类的一下方法,供ConnectorCoordinatorImpl类调用,其源码如下:/** * Access to the AuthenticationManager, AuthorizationManager, and * TraversalManagager for a Connector instance. */public class ConnectorInterfaces { private final String connectorName; private final Connec..
阅读全文
摘要:本文接着分析连接器及其构造工厂相关设计及源码,先浏览一下下面的UML模型图:ConnectorFactory为Connector类型连接器接口,ConnectorInstanceFactor为工厂实现类(这里是反射工厂);Connector接口下面的实现类均为具体的连接器类;ConnectorFac...
阅读全文
摘要:前面的源码分析由于沿着方法调用跟踪,还有部分类及接口未来得及分析,这里要说的是LoadManagerFactory接口与LoadManager接口及相关类等,先浏览一下UML模型图:这里又是工厂模式,这里的LoadManagerFactory接口及实现类HostLoadManagerFactory源码我就不贴出来了下面分析LoadManager接口源码:/** * Interface for a {@link LoadManager} implementations. */public interface LoadManager extends BatchResultRecorder { /.
阅读全文
摘要:这里分析一下FeedConnection接口及其实现类GsaFeedConnection相关源码:FeedConnection接口源码如下:/** * Interface for a feed connection. This takes in a data source name and a data * source object that contains the data to be sent. The actual connection to * the feed server should be established by the implementation during *.
阅读全文
摘要:接下来继续分析PusherFactory类及Pusher类的相关源码实现先浏览一下相关UML模型图:我们从该图可以看到,连接器最终是通过FeedConnection类型对象向应用中心发送xmlfeed数据的(勘误:企业搜索引擎开发之连接器connector(六)中的UML图 这部分有点出入)PusherFactory类是Pusher类的工厂类,现在来看PusherFactory源码:/** * Interface for a factory that creates {@link Pusher} instances for use by a * {@link com.google.enterp
阅读全文
摘要:接下来继续分析TimedCancelable类及QueryTraverser类TimedCancelable类的源码如下:/** * A {@link TimedCancelable} for running a {@link Connector} batch using * a {@link Traverser} */class CancelableBatch implements TimedCancelable { private static final Logger LOGGER = Logger.getLogger(CancelableBatch.class.getName(...
阅读全文
摘要:在继续分析TimedCancelable类及QueryTraverser类之前有必要熟悉一下ThreadPool类和TaskHandle类, 这两者的作用是以线程池的方式执行连接器的功能ThreadPool类源码如下:/** * Pool for running {@link TimedCancel...
阅读全文
摘要:在继续分析源码前,有必要熟悉一下连接器的UML模型图,不然面对那错综芜杂的依赖关系难免使人无法理清头绪先熟悉一下下面的uml模型:我画的该图示不全的,为的是避免细节的干扰而更能够清晰的表述连接器的UML模型ConnectorCoordinatorImpl类通过成员变量ThreadPool调用实现多线...
阅读全文
摘要:沿着方法的调用一路这么跟踪源码,有时未免使人陷入细节而找不到方向,可是对于全局的把握而又不得不跟踪这些源码入手上文的Instantiator接口及其实现类SpringInstantiator管理着全局的连接器类型及其实例现在接下来跟踪ConnectorCoordinator接口,该接口主要是操作具体...
阅读全文
摘要:实例化类Instantiator的功能主要是提供操作连接器实例的一些接口,基本上servlet对外提供的接口最终都会调用实例化类的相关方法先浏览一下Instantiator接口的源码/** * Interface for instantiator component. */public interf...
阅读全文
摘要:由于一直忙于公司产品的开发工作,企业搜索引擎的连接器分析及constellio源码分析因此长时间没有更新,本次继续这项未竟事业连接器管理都是通过servlet对外提供通信接口,由此从连接器管理提供的servlet着手,寻求分析连接器的入口该系统提供的servlet的uml模型图如下这些servlet...
阅读全文
摘要:本文主要分析tika的语言检测以及tika解决随机访问读取的问题,由于语言检测功能的实现设计一些算法,我这里就不贴出tika的源码了tika的语言检测的相关接口和类的uml模型图如下如果要获取文档内容和语言,我们可以新增DelegatingParser解析类,继承自DelegatingParser,...
阅读全文
摘要:tika怎样加载Parser实现类的,怎样根据文档的mime类型调用相应的Parser实现类,本文接着分析先熟悉一下tika的解析类的相关接口和类的UML模型:Parser接口的源码如下:/** * Tika parser interface. */public interface Parser e...
阅读全文
摘要:上文还没有来得及分析Apache Tika是怎样检测文档的mime类型的,以及怎样根据mime类型找到相应的Parser解析类的,下面接着说在tika-parsers.jar路径文件META-INF/services/org.apache.tika.detect.Detector记录了tika提供的...
阅读全文
摘要:Apache Tika是怎么识别待解析文档的mime类型的,是怎么根据mime类型得到相应的解析类Parser的,如果我们添加自定义mime类型以及相应的解析类,又该怎么处理呢?前面的文章还没有具体解决这些关键问题在tika-core的jar路径org.apache.tika.mime下有一tika...
阅读全文
摘要:上文分析了具体的解析类HtmlParser对网页文档的解析实现源码,了解到了Apache Tika的编码识别的处理方式。(HtmlParser对网页文件的解析其实并没有用到ParseContext上下文类的SAXParser对象,而是用到了另外一个TagSoup组件)本文继续分析Tika对xml格式...
阅读全文
摘要:上文我们基本知道Tika是通过SAXParser来解析XHTML文档的,下面我通过一个具体的解析类HtmlParser入手,来看看网页文件的解析过程。首先看看HtmlParser类的继承层次,HtmlParser继承自抽象类AbstractParser,而AbstractParser实现了Parse...
阅读全文
摘要:上文分析了Apache Tika的编码识别相关接口和实现类本文接着分析Apache Tika用到的一个关键类ParseContext,这里要明白Tika解析文档的方式,Tika将文件都解析为XHTML格式的文档,然后采用SAX基于事件的方式来解析这个XHTML格式,先来看看ParseContext类...
阅读全文
摘要:因为采用Apache Tika解析网页文件时产生乱码问题,所以后来仔细看了一下Apache Tika源码先浏览一下tika编码识别的相关接口和类的UML模型下面是编码识别接口,EncodingDetector.javapublic interface EncodingDetector { /*...
阅读全文
摘要:为了让我们的应用程序不依赖于具体的解析器,让我们以统一的接口来访问XML文档,Sun公司开发了JAXP(Java API For XML Processing)API。 JAXP没有扩充解析器新的功能,它是对解析器的一个封装,使开发人员能够独立于具体的解析器,这样我们就可以在应用程序中任意更换解析器,而不用更改应用程序代码。现在主流的解析器都支持DOM和SAX,所以JAXP也都支持。JAXP现在的版本是1.3包含在JDK5.0之中。 javax.xml包及子包,org.w3c.dom包及子包,org.xml.sax包及子包。javax.xml包及子包主要是获取解析器的实例,获取到解析器实例后就
阅读全文
摘要:Spring总是惊喜不断,这次又提供了Spring Hadoop模块,方便开发人员使用hadoop不少Spring Hadoop 终于发布了 1.0 的正式版,该版本据首个里程碑发布到现在已经 1 年了。在这一年中我们处理了大量来自社区的反馈,不断进行完善和新功能增加。包括简化编程模型和提升一致性、以更小的体积启动并根据需要增加,可移植性的提升等等。详情请看发行说明。Spring for Apache Hadoop 提供了Spring框架用于创建和运行HadoopMapReduce、Hive和Pig作业的功能,包括HDFS和HBase。如果你需要简单的基于 Hadoop 进行作业调度,你可添加
阅读全文
摘要:项目介绍Tika是一个内容分析工具,自带全面的parser工具类,能解析基本所有常见格式的文件,得到文件的metadata,content等内容,返回格式化信息。总的来说可以作为一个通用的解析工具。特别对于搜索引擎的数据抓去和处理步骤有重要意义。Tika是一个目的明确,使用简单的apache的开源项目。下图是Tika诞生的一个历史过程。Tika项目之初来源于Nutch项目(大家应该都不陌生),现在是Lucene的子项目,所以也是来源于搜索引擎。其实Nutch这个项目的开发过程中,孕育了不少东西,应该都归功于Doug Cutting。我个人也是觉得这件事情很赞,要搞Nutch这样一个通用的搜索引
阅读全文
摘要:保存各种信息对于应用程序来说非常平常,大多数时候它们是保存在关系数据库中。数据库处理规范数据类型十分在行,但是在处理如图像、文档等二进制数据时却不是那么得心应手。尽管可以用文件系统作为替代——而且它们还提供了更好的性能。但它们既没有提供用于搜索信息的查询语言,也没有提供表示关系或事务的概念。在很多情况下,允许第三方访问这些存储数据(随着应用程序的不断扩展,这成为一个典型的需求)是一个漫长而复杂的过程(它们不会在一夜之间完成)。内部存储结构很容易影响API架构,以及信息检索与遍历的方式。什么是JSR-170幸运的是,被称为Java内容仓库(Java Content Repository,JCR)
阅读全文
摘要:1. XML语法解析方式XML解析方法是理论知识,不止在java里是这样,换到其他语言下也是一样的。目前有三种: A. DOM(Document Object Model): DOM方法一次把XML的所有内容读入内存,按照xml的内容里面的node,attribute等生成一个树状结构。这就是一个对象模型了,完了我们就可以对这个树状结构进行操作。DOM的特点是编程简单,明了;缺点是要一次性读入所有内容 B. SAX(Simple API for XML): SAX是一种基于事件的解析方式,通过回调函数嵌入自己的代码。在解析前要定义好回调函数,在SAX开始解析后,一旦产生事件就会调用回调函数..
阅读全文
摘要:转载 http://www.ibm.com/developerworks/cn/java/j-lo-jsouphtml/index.html简介:jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。本文主要介绍如何使用 jsoup 来进行常用的 HTML 解析。jsoup 简介Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目,我曾经在 IBM DW 上发表过两篇关于 htmlparser 的文
阅读全文