深入浅出 jackrabbit 五 索引提交(下)
2009-09-17 00:00:00 来源:WEB开发网在上面的flush中,我们已经看到,只有index.commit()有一点点的神秘感,其他的逻辑ahuaxuan已经写的非常详细了。其实commit就是把这个PersistentIndex对应的indexwriter关闭掉。
总结 :
从这篇文章(上,下篇)中,我们可以看到delete,add和flush的主要逻辑,那么再简单回顾一下:
1. Delete:需要把所有可能保存document的地方都检查一遍,有就删除。这些地方包括,
1) VolatileIndex中的pendding队列
2) VolatileIndex(ramdirectory)中的document的indexdata
3) IndexQueue
4) PersistentIndex(fsdirectory)
2. Add and Flush:
1) 创建document
2) 将document加入到VolatileIndex的pending中
3) pending 中的document大于10就多线程生产indexdata到ram中
4) ram中的document的index数据大于100份就新建一个persistentIndex,并把这些数据拷贝到PersistentIndex对应的磁盘目录中。
3 indexNames和deletables这两个变量分别对应两个文件,一个表示有效的索引目录,还有一个表示需要删除的索引目录。在整个update 的过程中,PersistentIndex可能会新建,成为一个有效的目录,再后面的合并过程中又可能会被删除,所以用这两个变量来记录有效索引目录和需要被删除的索引目录。
通过这篇文章,我们可以得到了两个疑问:
1. indexqueue到底是怎么使用的?
2. indexmerger的逻辑是怎么样的?
同样,ahuaxuan将会在后面的文章中阐述这两个话题。
Tags:深入浅出 jackrabbit 索引
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接