深入浅出 jackrabbit 四 索引提交(上)
2009-09-17 00:00:00 来源:WEB开发网这个方法简单得不能再简单,简单得让人无法置信,呵呵,不要被假象所迷惑。我们来看看
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,在这个方法中,我们终于看到我们想看到的:
Tags:深入浅出 jackrabbit 索引
编辑录入:爽爽 [复制链接] [打 印]- ››深入浅出实战攻防恶意PDF文档
- ››深入浅出ShellExecute
- ››深入浅出URL编码
- ››深入浅出Java多线程程序设计
- ››深入浅出 jackrabbit 八 索引合并(上)
- ››深入浅出 jackrabbit 九 索引合并(下)
- ››深入浅出 jackrabbit 十 redolog 和 recovery.doc...
- ››深入浅出 jackrabbit 十一 jackrabbit改进要点
- ››深入浅出 jackrabbit 十二 key-value存储系统
- ››深入浅出 jackrabbit 十三 查询之AST和QT
- ››深入浅出 jackrabbit 一
- ››深入浅出 jackrabbit 二 索引概览
更多精彩
赞助商链接