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

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

 2009-09-17 00:00:00 来源:WEB开发网   
核心提示: Java代码privatevoidcommitVolatileIndex()throwsIOException{//checkifvolatileindexcontainsdocumentsatallif(volatileIndex.getNumDocuments()>0){longtim

Java代码   

private void commitVolatileIndex() throws IOException { 
 
    // check if volatile index contains documents at all 
    if (volatileIndex.getNumDocuments() > 0) { 
 
      long time = System.currentTimeMillis(); 
      // create index 
/*这里创建的是一个Action的实现类CreateIndex,它的作用是创建一个persistentindex对象,很显然,创建的逻辑应该在它的execute方法中,如果你深入的看下去,会发现,这里的传进去的第二参数null,其实是表示创建一个新的persistentindex,而创建一个persistentindex意味着需要一个fsdiretory,创建一个fsdirectory又意味着需要一个目录,于是我们可以看到其实创建index directory的命名方法*/ 
      CreateIndex create = new CreateIndex(getTransactionId(), null); 
      executeAndLog(create); 
 
      // commit volatile index 
/*从VolatileCommit这个名字上看来,这个action的主要操作就是把内存里的index数据写到刚创建的 persistentindex对象中,因为需要一个persistentindex的name作为构造参数,恰巧它是新建的这个 persistentindex对象,鉴于方法的重要性,ahuaxuan还是再多罗嗦一下,它的主要功能是把volatile中index的二进制数据拷贝到persistentindex,其实就是数据从ramdirectory向fsdirectory转移的过程 */ 
 
      executeAndLog(new VolatileCommit(getTransactionId(), create.getIndexName())); 
 
      // add new index 
/*这个AddIndex类也是非常重要的类,它存在的目的是什么呢?*/ 
      AddIndex add = new AddIndex(getTransactionId(), create.getIndexName()); 
      executeAndLog(add); 
 
      // create new volatile index 
/*volatileindex 的使命到这里就结束了,下面就重新创建一个volatileindex吧,放弃过去,重新开始 */ 
      resetVolatileIndex(); 
 
      time = System.currentTimeMillis() - time; 
      log.debug("Committed in-memory index in " + time + "ms."); 
    } 
  }

上一页  3 4 5 6 7 8 9  下一页

Tags:深入浅出 jackrabbit 索引

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