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

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

 2009-09-17 00:00:00 来源:WEB开发网   
核心提示: 另外一个是如果pending中不存在这个document,那么就会调用indexreader来删除ramdirectory中符合条件的document,深入浅出 jackrabbit 四 索引提交(上)(4),也就是不管怎么做,volatile都是在操作内存,既然如此,我们不妨过去看看:Java

另外一个是如果pending中不存在这个document,那么就会调用indexreader来删除ramdirectory中符合条件的document。

也就是不管怎么做,volatile都是在操作内存,它有一个document队列,当队列长度超过10的时候,这些document就会被转换成index的二进制数据放到ramdirectory。

看到这里,童鞋们应该会问一个问题,就是内存中的index数据怎么写到磁盘中呢?后面我们会看到它有一个copy方法负责把内存中的数据copy到磁盘上。

3. Persistentindex是什么玩意,持久化索引,把索引存放在持久化介质中,目前是local file system。而且看上去PersistentIndex有很多个。不同的persistentindex会使用不同的directory。这种设计是不是告诉我们,这些不同的fsdirectory在某个固定的点是需要合并的呢?带着两个疑问,我们可以继续往下看。

总结成一句话就是,一个document可能存在于多个地方,当删除一个node时,所有的这些地方都需要清扫一遍。

我们来看看第二个大问题:

2 如何把document放到index中

如果DeleteNode一样,AddNode的逻辑也在它的execute方法中,既然如此,我们不妨过去看看:

Java代码   

public void execute(MultiIndex index) throws IOException { 
      if (doc == null) { 
        try { 
//如果doc为null再次创建document,创建document的流程之前已经讲得很清楚了。 
          doc = index.createDocument(new NodeId(uuid)); 
        } catch (RepositoryException e) { 
          // node does not exist anymore 
          log.debug(e.getMessage()); 
        } 
      } 
      if (doc != null) { 
        index.volatileIndex.addDocuments(new Document[]{doc}); 
      } 
    }

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

Tags:深入浅出 jackrabbit 索引

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