开发学院软件开发Java 深入浅出 jackrabbit 五 索引提交(下) 阅读

深入浅出 jackrabbit 五 索引提交(下)

 2009-09-17 00:00:00 来源:WEB开发网   
核心提示: 在上面的flush中,我们已经看到,深入浅出 jackrabbit 五 索引提交(下)(2),只有index.commit()有一点点的神秘感,其他的逻辑ahuaxuan已经写的非常详细了,通过这篇文章,我们可以得到了两个疑问:1. indexqueue到底是怎么使用的?2. indexmerg

在上面的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将会在后面的文章中阐述这两个话题。

上一页  1 2 

Tags:深入浅出 jackrabbit 索引

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接