深入浅出 jackrabbit 三 创建 document
2009-09-17 00:00:00 来源:WEB开发网从上面这个方法我们也大概看出一点名堂了,一般的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
Tags:深入浅出 jackrabbit 创建
编辑录入:爽爽 [复制链接] [打 印]- ››创建SQL2005自动备份,定期删除的维护计划
- ››创建动态表单 javascript
- ››深入浅出实战攻防恶意PDF文档
- ››创建基于PPTP的站点到站点VPN连接:ISA2006系列之...
- ››创建基于L2TP的站点到站点的VPN连接:ISA2006系列...
- ››创建一个Twisted Reactor TCP服务器
- ››创建Windows Mobile上兼容性好的UI 程序
- ››创建android的Service
- ››创建远古部落环境与原住民角色
- ››创建并扩展Apache Wicket Web应用
- ››创建不在任务条中显示窗口按钮的应用
- ››创建 Android 文件系统(Root file system)
更多精彩
赞助商链接