Jackrabbit如何进行索引
来源:互联网 发布:手冢治虫 知乎 编辑:程序博客网 时间:2024/05/28 11:29
Jackrabbit是利用Lucene实现的全文检索。具体的实现在jackrabbit-core项目的org.apache.jackrabbit.core.query.lucene包中。
索引过程的关键类有以下几个:
1、org.apache.jackrabbit.core.query.lucene.NodeIndex。这个类的核心方法是createDoc,在这里,生成了Lucene的Document,并且处理了JCR节点的各个属性。在这个类里还可以看到jackrabbit是利用tika处理的binary数据(addBinaryValue方法中),同时也可以看到jackrabbit的一个比较龌龊的实现:对于二进制流,只有放在名称为jcr:data的属性中才会被索引。具体的代码是这个样子的:
String jcrData = mappings.getPrefix(Name.NS_JCR_URI) + ":data";if (!jcrData.equals(fieldName)) {// don't know how to indexreturn;}所以,nt:file类型下的文档内容会自动被索引。如果你想自定义类型,并且希望其中的二进制字节数据被索引,那么,你有两个选择:
第一:改jackrabbit的代码,让他支持你的属性;
第二:将放置二进制字节数据的属性名设置为jcr:data,并且让该节点继承nt:resource(需要mimetype等属性)。
当然绝大多数人会选择第二种吧。
2、org.apache.jackrabbit.core.query.lucene.SearchIndex。这个类是jackrabbit与Lucene交互的核心类,索引和检索都是通过它来完成的,具体是executeQuery、updateNodes两个方法。在updateNodes方法中,会利用NodeIndex来建立索引。
3、org.apache.jackrabbit.core.SearchManager。该类实现了SynchronousEventListener接口,换句话说Jackrabbit的索引过程采用的是其自身的Listener机制。其onEvent会调用SearchIndex的updateNodes来更新索引。
综上,jackrabbit利用lucene的索引过程并不复杂。
另外,对于JCR,有个问题是其接口不支持二次检索,希望在JCR的后续版本中能改进。最简单的方法就是在Query中加一个executeWithFilter就是了。
- Jackrabbit如何进行索引
- jackrabbit中用xpath进行搜索
- jackrabbit in action three(索引概览)
- 如何进行批量索引重建?
- jackrabbit in action five(索引提交(上) )
- jackrabbit in action five( 索引提交(下))
- jackrabbit in action seven(索引合并(上))
- jackrabbit in action seven(索引合并(下) )
- 如何对表进行建立索引sqlserver
- Solr之如何进行索引操作。
- jackrabbit security
- jackrabbit sample
- jackrabbit version
- JackRabbit随笔
- 如何对只有两个值的列进行索引
- java对于大型数据库,如何使用lucene进行建立索引
- (二)Hyper如何对DataBlock中的数据进行索引
- phoenix 如何优化成使用索引进行查询源码分析
- innerHTML、innerText、outerHTML
- 【iphone游戏开发】cocos2d和box2d API 文档
- RedHat Linux5.6_64位的安装详解(三)
- 技术人才离职原因分析:一个技术管理者的总结
- Grockit融资700万美元,推出视频问答网站Grockit Answers
- Jackrabbit如何进行索引
- 每个java初学者都该搞懂的六个问题
- IHttpModule.Init方法被执行多次的原因(转自:http://www.cnblogs.com/mingda/archive/2009/02/11/1388709.html)
- 数据挖掘技术的来源、历史、研究内容及常用技术
- 输出下三角矩阵螺旋数(Yahoo校招笔试题)
- The SSH connection between computers without passwords
- 想学和要学的东西太多了
- freetype文字颜色
- IHttpModule.Init会被调用多次的原因(转自:http://lidup.blog.51cto.com/426277/140338)