WEB开发网
开发学院软件开发Java 深入浅出 jackrabbit 三 创建 document 阅读

深入浅出 jackrabbit 三 创建 document

 2009-09-17 00:00:00 来源:WEB开发网   
核心提示: 通过上面这段示例代码,我们已经知道,深入浅出 jackrabbit 三 创建 document(5),addValue方法是创建3种field,下面我们来一一查看创建这3种field的方法: NodeIndexer#addBinaryValue() NodeIndexer#addBooleanV

通过上面这段示例代码,我们已经知道,addValue方法是创建3种field,下面我们来一一查看创建这3种field的方法:

NodeIndexer#addBinaryValue()

NodeIndexer#addBooleanValue()

NodeIndexer#addStringValue()

首先登场的是addBinaryValue,该方法之操作nt:resource的node,同时需要拿到binary的type和encoding,然后从文件中提取文本。

方法中已经加入了ahuaxuan的注释

Java代码   

protected void addBinaryValue(Document doc, 
                 String fieldName, 
                 Object internalValue) { 
    // 'check' if node is of type nt:resource 
    try { 
      String jcrData = mappings.getPrefix(Name.NS_JCR_URI) + ":data"; 
      if (!jcrData.equals(fieldName)) { 
        // don't know how to index 
        return; 
      } 
 
      InternalValue typeValue = getValue(NameConstants.JCR_MIMETYPE); 
      if (typeValue != null) { 
  //拿到文本的type,pdf,doc,等等 
        String type = typeValue.getString(); 
 
        // jcr:encoding is not mandatory 
   //拿到编码类型 
        String encoding = null; 
        InternalValue encodingValue = getValue(NameConstants.JCR_ENCODING); 
        if (encodingValue != null) { 
          encoding = encodingValue.getString(); 
        } 
  
        InputStream stream = 
            ((BLOBFileValue) internalValue).getStream(); 
  //对而进制流进行提取,这里我们暂时把这个操作当成非异步//操作来理解 
        Reader reader = extractor.extractText(stream, type, encoding); 
  //创建field 
        doc.add(createFulltextField(reader)); 
      } 
    } catch (Exception e) { 
      ……………… 
    } 
}

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

Tags:深入浅出 jackrabbit 创建

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