WEB开发网
开发学院软件开发Java 深入浅出 jackrabbit 四 索引提交(上) 阅读

深入浅出 jackrabbit 四 索引提交(上)

 2009-09-17 00:00:00 来源:WEB开发网   
核心提示: 从代码和ahuaxuan的注释上看,要把内存中的index数据刷到磁盘上还真不是一件简单的事情,深入浅出 jackrabbit 四 索引提交(上)(9),不过从这个过程中,我们得到一个重要的信息,ahuaxuan决定把它的研究放到后面,接下来,最开始的时候,persistentindex中只包含

从代码和ahuaxuan的注释上看,要把内存中的index数据刷到磁盘上还真不是一件简单的事情。不过从这个过程中,我们得到一个重要的信息,最开始的时候,persistentindex中只包含了100个document的index数据。不过聪明的你一定已经看出点端倪,冥冥之中,好像在告诉我们,所有的这些persistentindex其实都缺少一个操作,它们需要合并index文件,这个操作和AddIndex息息相关,我们貌似对 AddIndex的左右已经看出一点端倪了。

要解开这个谜团,非得到AddIndex中看看不可:

Java代码   

public void execute(MultiIndex index) throws IOException { 
      PersistentIndex idx = index.getOrCreateIndex(indexName); 
/*index.indexNames是个什么东西?其实就是一个列表,任何一个新的persistentindex都需要被注册到这个列表中,它的作用很多,比如注册之后,只需要通过persistentindex类的名字就是可以取到对应的persistentindex,在上面的方法中并没有把新建的persistentindex注册到indexNames中去,所以这个方法先判断有没有注册,没有注册那么就注册进去,接着把这个 indexName传给了merger类,从名字上来看,这个merger的功能应该就是合并persistentindex的数据了*/ 
      if (!index.indexNames.contains(indexName)) { 
        index.indexNames.addName(indexName); 
        // now that the index is in the active list let the merger know about it 
        index.merger.indexAdded(indexName, idx.getNumDocuments()); 
      } 
    }

那么既然知道了有这么一个merger类,那不看看他做了点什么也过意不去啊。

看看它的类注释:Merges indexes in a separate deamon thread.

原来是一个deamon线程啊,那它一定是不停的在后台执行merge操作,而且理论上来讲,也应该有一个临界值,超过多少document被写到 persistentindex的时候就执行merger操作。这里面的逻辑应该有很多值得我们学习的地方,抱着这样的想法,ahuaxuan决定把它的研究放到后面。

接下来,让我们说说flush这个操作,这是索引提交的第三部重要流程

To be continue

上一页  4 5 6 7 8 9 

Tags:深入浅出 jackrabbit 索引

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