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

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

 2009-09-17 00:00:00 来源:WEB开发网   
核心提示: 在上面这个方法中,我们可以看到以下几个流程:1 执行DeleteNode的execute方法(是Action的实现类)2 记录redolog(redolog做啥呀,深入浅出 jackrabbit 四 索引提交(上)(2),先留着)3 刷新redolog到磁盘同时commit indexingqu

在上面这个方法中,我们可以看到以下几个流程:

1 执行DeleteNode的execute方法(是Action的实现类)

2 记录redolog(redolog做啥呀,先留着)

3 刷新redolog到磁盘同时commit indexingqueue(如果是事物提交或者添加index的时候,同时,这个indexingqueue是一个非常怪的设计)

显然这个方法是用来执行Action的,DeleteNode只是Action之一,所以要理解整个体系,我们得先了解了解Action接口到底有多少个实现类:

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

图片看不清楚?请点击这里查看原图(大图)。

从图中可以看到Action有很多的实现类,不过ahuaxuan已经在图中作了一些概要的说明以帮助我们理解这些实现类的作用,而且DeleteNode和AddNode类已经出现在我们要分析的范围之内了。

在了解了Action之后,我们需要正视我们在文章开始提出的3个问题了

1 如何把document从index删除

首先,看看DeleteNode里面的逻辑:从上图中我们可以确切的知道DeleteNode就是用来把一个Node从index删除的action。它的主要逻辑都集中在execute方法中,那么下面我们来看看DeleteNode的execute方法(其中包含了ahuaxuan的一些注释和原有的注释,可以帮助我们快速理解它的功能):

Java代码   

public void execute(MultiIndex index) throws IOException { 
//一个deleteNode代表了一个需要被删除的Node,它持有这个//node的uuid 
      String uuidString = uuid.toString(); 
      // check if indexing queue is still working on 
      // this node from a previous update 
//根据uuid把document从indexingqueue中删除 
      Document doc = index.indexingQueue.removeDocument(uuidString); 
      if (doc != null) { 
        Util.disposeDocument(doc); 
      } 
      Term idTerm = new Term(FieldNames.UUID, uuidString); 
      // if the document cannot be deleted from the volatile index 
      // delete it from one of the persistent indexes. 
//同时也要从document内存队列或者内存索引中删除,如果存在于volatieindex的document内存队列或者内存索引中,则表示不存在 
于persistentindex中,反之亦然。 
      int num = index.volatileIndex.removeDocument(idTerm); 
      if (num == 0) { 
        for (int i = index.indexes.size() - 1; i >= 0; i--) { 
//不存在于内存索引中,所以从注册过的persistentindex中删除 
          // only look in registered indexes 
          PersistentIndex idx = (PersistentIndex) index.indexes.get(i); 
          if (index.indexNames.contains(idx.getName())) { 
            num = idx.removeDocument(idTerm); 
            if (num > 0) { 
              return; 
            } 
          } 
        } 
      } 
    }

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

Tags:深入浅出 jackrabbit 索引

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