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

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

 2009-09-17 00:00:00 来源:WEB开发网   
核心提示: 这个方法简单得不能再简单,简单得让人无法置信,深入浅出 jackrabbit 四 索引提交(上)(5),呵呵,不要被假象所迷惑,那么我们继续追踪旅程,来看看这个方法AbstractIndex.addDocuments,我们来看看volatileIndex.addDocuments这个方法,因为逻

这个方法简单得不能再简单,简单得让人无法置信,呵呵,不要被假象所迷惑。我们来看看

volatileIndex.addDocuments这个方法,因为逻辑都在这个方法中:

Java代码   

void addDocuments(Document[] docs) throws IOException { 
    for (int i = 0; i < docs.length; i++) { 
      Document old = (Document) pending.put(docs[i].get(FieldNames.UUID), docs[i]); 
//这里的pending就是volatileindex中那个document内存队列 
      if (old != null) { 
        Util.disposeDocument(old); 
      } 
 
//如果队列长度超过10(bufferSize),那么执行commitPending,也就是说逻辑又跑到commitPending中去了 
      if (pending.size() >= bufferSize) { 
        commitPending(); 
      } 
      numDocs++; 
    } 
    invalidateSharedReader(); 
  }

既然逻辑跑到commitPending中去了,我们就看commitPending,从名字上来看,commitPending就是把pending中的document处理掉:

Java代码  

private void commitPending() throws IOException { 
    super.addDocuments((Document[]) pending.values().toArray( 
        new Document[pending.size()])); 
//从这里可以看出,一旦pending被处理,那么就把pending置空。 
    pending.clear(); 
  }

逻辑还不在这个方法中,那么我们继续追踪旅程,来看看这个方法AbstractIndex.addDocuments,在这个方法中,我们终于看到我们想看到的:

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

Tags:深入浅出 jackrabbit 索引

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