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

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

 2009-09-17 00:00:00 来源:WEB开发网   
核心提示: 这段方法的主要逻辑是从indexingqueue中删除node对应的document,并从volatileindex对象(或者 indexfile)中也删除对应的document,深入浅出 jackrabbit 四 索引提交(上)(3),最后从persistentindex类中删除对应的docu

这段方法的主要逻辑是从indexingqueue中删除node对应的document,并从volatileindex对象(或者 indexfile)中也删除对应的document,最后从persistentindex类中删除对应的document,所以这里有几件事情值得我们注意:

1. indexingqueue中有可能保存着一个node对应的document,那么这个indexingqueue是做什么用的?

Indexingqueue中的document其实是那些需要的extract的node,因为有些node包含的二级制文件,比如pdf,提炼文本的时候需要点时间,于是,jackrabbit就把提炼的过程给弄成异步的了,提炼完成之后,会把这个document放到indexingqueue中。所以当一个document需要删除的时候,肯定要检查这个异步的队列。

2. Volatileindex是个什么玩意,内存索引,即把索引存放在memory中

但是这里有点蹊跷的地方,需要我们注意一下,我们看看它逻辑:

Java代码   

int removeDocument(Term idTerm) throws IOException { 
    Document doc = (Document) pending.remove(idTerm.text()); 
    int num; 
    if (doc != null) { 
      Util.disposeDocument(doc); 
      // pending document has been removed 
      num = 1; 
    } else { 
      // remove document from index 
      num = super.getIndexReader().deleteDocuments(idTerm); 
    } 
    numDocs -= num; 
    return num; 
}

这个方法在DeleteNode的execute方法中被调用过了,从这个方法来看,这里面有两件事情值得我们关注,一个是volatileindex类中有一个pending队列,放着document,经查,当这个队列超过一定长度的时候,document中的数据就会被写成二进制索引数据放到内存中。

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

Tags:深入浅出 jackrabbit 索引

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