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

深入浅出 jackrabbit 三 创建 document

 2009-09-17 00:00:00 来源:WEB开发网   
核心提示: 从上面这个方法我们也大概看出一点名堂了,一般的string类型的property也作了单独的field,深入浅出 jackrabbit 三 创建 document(7),而且还有一个很好玩的,如果 includeInNodeIndex=true(表示这个property应该放到fulltext中

从上面这个方法我们也大概看出一点名堂了,一般的string类型的property也作了单独的field。而且还有一个很好玩的,如果 includeInNodeIndex=true(表示这个property应该放到fulltext中去,显然这个是在property定义的时候决定的,这个值来自于配置文件,如果没有做特别的配置,那么这个值为false,详见:IndexingRule),那么会执行,createFulltextField,我们看看里面是什么东西吧:

Java代码   

protected Field createFulltextField(String value) { 
    if (supportHighlighting) { 
  //还记得supportHighlighting这个参数不,这个表示如果需要//高亮,就会把string类型的property加到fulltext中,同时保存offset。 
       
      Field.Store stored; 
      if (value.length() > 0x4000) { 
  //超过16k还需要压缩一下 
        stored = Field.Store.COMPRESS; 
      } else { 
        stored = Field.Store.YES; 
      } 
      return new Field(FieldNames.FULLTEXT, value, stored, 
          Field.Index.TOKENIZED, Field.TermVector.WITH_OFFSETS); 
    } else { 
  //不支持高亮就不保存offset 
      return new Field(FieldNames.FULLTEXT, value, 
          Field.Store.NO, Field.Index.TOKENIZED); 
    } 
  } 

Hoho,一个普通的string类型的property居然加到fulltext中去了。并且如果支持高亮,还需要保存它的offset,这样做的目的是什么呢,貌似我们在这里找不到答案,那我们就等到分析query的时候再来回答这个问题。

到目前为止,就ahuaxuan的分析而言,field的种类就是以上这么多种了,我们再来总结一下:

引用

1. Uuid(node的uuid)

2. PARENT(parent node的uuid)

3. LABEL(node name)

4. _:PROPERTIES_SET(properties name)

5. _:MVP(multi value property name)

6. _:FULLTEXT(jcr:data which extract from pdf, doc….)

7. _:PROPERTIES(properties name and value)

8. *:FULL:*(string property name):(string property value)

这样我们就明白,到底node的哪些属性被添加到索引中去了,这样为我们理解查询提供了有力的依据。

接下来,我们会去了解一下把document添加到indexwriter的流程,这个流程中隐藏着很多的秘密,to be continue

上一页  2 3 4 5 6 7 

Tags:深入浅出 jackrabbit 创建

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