WEB开发网
开发学院软件开发Java 深入浅出 jackrabbit 二 索引概览 阅读

深入浅出 jackrabbit 二 索引概览

 2009-09-17 00:00:00 来源:WEB开发网   
核心提示:任何一个数据库都离不开一个技术索引技术,jackrabbit作为内容仓库的开源实现亦不能例外,深入浅出 jackrabbit 二 索引概览,从前面的文章中我们已经清楚的知道 jackrabbit使用lucene来进行索引任务和查询任务,而查询正是基于索引,也就是说SearchManager是索引的入口,而且从图中所示的

任何一个数据库都离不开一个技术----索引技术,jackrabbit作为内容仓库的开源实现亦不能例外,从前面的文章中我们已经清楚的知道 jackrabbit使用lucene来进行索引任务和查询任务。而查询正是基于索引,所以在本文中,ahuaxuan将和大家一起来学习 jackrabbit中建立索引的方法。

事实上,jackrabbit中建立索引的流程是比较冗长和复杂的,如同query一样,在本文中ahuaxuan将把注意里放在整体流程上,而流程的每一步可以说都是比较复杂的,这些复杂的实现细节将会放在后面的文章中阐述,本文的主要目的是了解jackrabbit中创建流程的一般过程。

首先,我们需要寻找一个入口点,一个接口,这个接口是建立索引的入口,任何人需要建立索引的功能必须要调用这个接口,那么这个接口在哪里呢,通过对源代码的类结构分析,ahuaxuan得出来以下的类图,从图中我们可以看出,建立索引的api其实是一个监听器(监听器模式来源于观察者模式,两者并没有什么本质上的不同),任何人需要建立索引只要发事件给对应的监听器,那么监听器就会执行建立索引的流程(同时请注意下图中标注出来创建索引的两个入口,一个是 Update类,还有一个是ClustorNode):

深入浅出 jackrabbit 二 索引概览

图片看不清楚?请点击这里查看原图(大图)。 

上图即描述了建立索引前的主要逻辑,ObervationDispatcher类,当ClustorNode中发现其他节点有 save,update,delete或者本node中有update操作,那么ObervationDispatcher将会把这种事件分发给对这类事件感兴趣的类,那么显然,对这类event最感兴趣的便是图中的SearchManager,也就是说SearchManager是索引的入口。而且从图中所示的类结构图可知,SearchManager就是一个EventListener。

1 2 3 4  下一页

Tags:深入浅出 jackrabbit 索引

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接