- 浏览: 145367 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
95546772:
我的QQ是 95546772
使用Jencks实现Hibernate与Jackrabbit的分布式事务 -
95546772:
您好,我正在学习jackrabbit.谷歌的连接失效了.能否发 ...
使用Jencks实现Hibernate与Jackrabbit的分布式事务 -
chenjson_chen:
楼主的这个说明,解答了现在项目中遇到的问题
关于Spring嵌套事务 -
beykery:
没必要这么写。。。。
回收DirectByteBuffer -
lc_windson:
楼主,关于这一块,我遇到了一个很困惑的问题,分析.tii文件的 ...
Lucene索引文件解析之“项”
从1.4版本之后,jackrabbit开始支持节点的属性索引配置.换句话说,我们可以通过配置决定哪种类型节点的哪些属性应该建立索引.这样一来,我们就能对索引内容进行优化,使得搜索更为高效.
索引配置文件也是一个XML,默认名字为indexing_configuration.xml.默认情况下,jackrabbit不会有索引配置的存在,因此要想使用它就必须在repository.xml和workspace.xml中,为SearchIndex元素添加一个参数.
示例:
<param name="indexingConfiguration" value="${wsp.home}/indexing_configuration.xml"/>
上例中,value指明了配置文件存在的相对路径,它与workspace.xml位于同一个路径下.
接下来,看看哪些问题可以通过索引配置解决.
问题1 如何只给特定的属性建立索引?
示例:
<?xml version="1.0"?> <!DOCTYPE configuration SYSTEM "http://jackrabbit.apache.org/dtd/indexing-configuration-1.0.dtd"> <configuration xmlns:nt="http://www.jcp.org/jcr/nt/1.0"> <index-rule nodeType="nt:unstructured"> <property>Text</property> </index-rule> </configuration>
上例中,索引规则定义了nt:unstructured节点类型下,名为Text的属性需要建立索引.这条规则对nt:unstructured子类型也有效.
问题2 如何调整特定类型或属性的查询相关度?
示例:
<?xml version="1.0"?> <!DOCTYPE configuration SYSTEM "http://jackrabbit.apache.org/dtd/indexing-configuration-1.0.dtd"> <configuration xmlns:nt="http://www.jcp.org/jcr/nt/1.0"> <index-rule nodeType="nt:unstructured" boost="2.0"> <property>Text</property> </index-rule> </configuration>
上例中,指明nt:unstructured类型的节点的激进因子(boost)为2.0,默认值是1.0,当按jcr:score进行降序排序结果集时,boost值越高位置越考前(也可能有例外,关于score的计算方法请见这里).boost值的有效范围是1.0~5.0.
若想在特定属性上指定boost参数也是可以的.
示例:(为了节省空间,下文的示例中将省略一些不必要的内容)
<index-rule nodeType="nt:unstructured"> <property boost="3.0">Title</property> <property boost="1.5">Text</property> </index-rule>
问题3 上面的规则不错,但只能将规则指定给某个类型,有没有比类型更具体的指定方式呢?
借助condition值的定义实现更具体的方式,看下面示例:
<index-rule nodeType="nt:unstructured" boost="2.0" condition="@priority = 'high'"> <property>Text</property> </index-rule>
priority属性等于high的nt:unstructured节点,它的激进因子设置为2.0,且只有名为Text的属性会被建立索引.
注意,目前针对属性的条件,仅支持等号操作符和字符串类型.
条件也可以不在当前节点上,示例:
<index-rule nodeType="nt:unstructured" boost="2.0" condition="ancestor::*/@priority = 'high'"> <property>Text</property> </index-rule> <index-rule nodeType="nt:unstructured" boost="0.5" condition="parent::foo/@priority = 'low'"> <property>Text</property> </index-rule> <index-rule nodeType="nt:unstructured" boost="1.5" condition="bar/@priority = 'medium'"> <property>Text</property> </index-rule> 当有多规则应用于统一个类型时,最先满足条件的那个规则会被应用,其余的将被忽略.
在条件中也是可以指定节点类型的,但类型的匹配必须是精确的(exact),也就是不支持类型的子类.
示例:
<index-rule nodeType="nt:unstructured" boost="2.0" condition="element(*, nt:unstructured)/@priority = 'high'"> <property>Text</property> </index-rule>
问题4 有些属性的值(文本)不需要做全文索引,该怎么办?
默认情况下,凡STRING类型的属性以及其它可以抽取文本的属性都是进行全文索引的.
这就意味着,你可以通过类似jcr:contains(., 'foo')的条件查找到含有foo关键的文本所在的位置.
有时,类似省市地区这样的属性,就没有必要做全文索引,那么可以通过下面的方式禁用全文索引:
<index-rule nodeType="nt:unstructured"> <property nodeScopeIndex="false">Text</property> </index-rule>
问题5 可不可以用正则表达来匹配要索引的属性?
jackrabbit 1.5支持这样的特性,同时要确保使用DTD1.1的版本.
示例:
<?xml version="1.0"?> <!DOCTYPE configuration SYSTEM "http://jackrabbit.apache.org/dtd/indexing-configuration-1.1.dtd"> <configuration xmlns:nt="http://www.jcp.org/jcr/nt/1.0"> <index-rule nodeType="nt:unstructured"> <property isRegexp="true">.*Text</property> </index-rule> </configuration>
在属性上将useInExcerpt设置为false,可以禁用属性的文本摘要(excerpt)特性,这也是1.5的默认特性.
问题6 很多时候用nt:resource存储文件的内容,但全文查询的时候却只能查到它,而不是它的父节点,怎么办?
<?xml version="1.0"?> <!DOCTYPE configuration SYSTEM "http://jackrabbit.apache.org/dtd/indexing-configuration-1.0.dtd"> <configuration xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"> <aggregate primaryType="nt:file"> <include>jcr:content</include> </aggregate> </configuration>
通过配置aggregate元素来解决这个问题.上例中,就指明了nt:file的jcr:content子节点的索引会指向nt:file.
当然,还可以限定子节点的类型,并用"*"匹配所有子节点,示例:
<?xml version="1.0"?> <!DOCTYPE configuration SYSTEM "http://jackrabbit.apache.org/dtd/indexing-configuration-1.0.dtd"> <configuration xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"> <aggregate primaryType="nt:file"> <include primaryType="nt:resource">*</include> </aggregate> </configuration>
还可以通过深度(相对路径)来匹配多层子节点,示例:
<?xml version="1.0"?> <!DOCTYPE configuration SYSTEM "http://jackrabbit.apache.org/dtd/indexing-configuration-1.0.dtd"> <configuration xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"> <aggregate primaryType="nt:file"> <include>*</include> <include>*/*</include> <include>*/*/*</include> </aggregate> </configuration>
问题7 不同属性的文本值索引的分析算法不同,该怎么办?
<?xml version="1.0"?> <!DOCTYPE configuration SYSTEM "http://jackrabbit.apache.org/dtd/indexing-configuration-1.0.dtd"> <configuration xmlns:nt="http://www.jcp.org/jcr/nt/1.0"> <analyzers> <analyzer class="org.apache.lucene.analysis.KeywordAnalyzer"> <property>mytext</property> </analyzer> <analyzer class="org.apache.lucene.analysis.WhitespaceAnalyzer"> <property>mytext2</property> </analyzer> </analyzers> </configuration>
上文的内容均参考至http://wiki.apache.org/jackrabbit/IndexingConfiguration
发表评论
-
回收DirectByteBuffer
2011-03-03 10:33 2869为避免GC的负效应, 使用DirectByteBuffer管理 ... -
基于DSL风格的代码重构
2010-10-29 09:32 206什么样代码是简洁易懂, 这很难有个统一的标准, 因为它很 ... -
应用DirectBuffer提升系统性能
2010-08-19 13:01 3295Java 2 SE 6 doc : Given ... -
netty应用中接收缓存覆写的陷阱
2010-08-17 13:31 6426version : netty-3.2.1.final ... -
GWT应用经验小结
2009-03-16 18:29 38951. pendingSrc 问题描述:Image的set ... -
解读《使用Jencks实现Hibernate与Jackrabbit的分布式事务》
2009-01-15 18:15 5554前言 本文是针对《使用Jencks实现Hibernate与 ... -
使用Jencks实现Hibernate与Jackrabbit的分布式事务
2009-01-13 10:40 4366前言 这是一篇用Spring和Jencks ... -
从Erlang看高并发可容错系统设计原则
2008-12-25 18:30 2558《面对软件错误构建可靠的分布系统》 写道 Erlang 的世 ... -
Lucene索引文件解析之“项”
2008-12-23 17:25 1890接上文Lucene索引文件解析之“域”。 关于项(Ter ... -
Mockito入门
2008-12-17 18:35 11456简介 InfoQ-使用Mockito 1.5监视普通对象 ... -
开源让我兴奋
2007-01-08 11:47 866一直在设想自己设计一个java过程自动化的工具,但苦于经验、技 ... -
对象的创建和销毁
2008-08-31 05:23 1037考虑用静态工厂方法代替构造器 静态工厂方法的名字使得调用者 ... -
关于Spring嵌套事务
2008-09-03 05:34 13646不久前,为了避免事务的嵌套,刻意去修改以前的设计,导致各部分之 ... -
教练Marc Lammers语录
2008-09-09 02:06 1088本文摘之InfoQ:世界顶尖 ... -
速度计算有偏差
2008-09-18 01:24 1158团队有4个开发人员,3个测试人员,试行了4天的小迭代,完成的工 ... -
任务板用起来了
2008-09-25 00:53 2295好久就知道任务是个项 ... -
用例编写推荐守则
2008-10-08 07:52 1121没有最佳的用例模板,格式和章节是为用例的内容服务的,它们 ... -
Lucene索引文件解析之“域”
2008-12-12 00:42 2978引言 目前最新的Lucene的版本是2.4.0,但关于索引 ... -
GWT中RequestBuilder使用贴士
2008-12-09 13:35 7658GET请求 String url = // 动态生成 ... -
Failed to resolve artifact
2008-11-30 03:58 6857使用GWT-Maven Archetype (maven-go ...
相关推荐
在入门教程中,你将学习如何安装和配置Jackrabbit,以及如何使用Java API(JCR API)进行基本操作,如创建、读取、更新和删除节点。这通常涉及以下步骤: 1. **环境准备**:安装Java运行环境,下载并解压Jackrabbit...
文档中提到的API演示程序,说明了如何手动配置JackRabbit仓库。以下是一些重要知识点: 1. JackRabbit安装与配置:需要引入一系列的JAR包,这些包包括核心的JackRabbit API库、JackRabbit核心实现、JCR标准接口库、...
### Jackrabbit 在项目实施中的常见问题与解决方案 #### 一、Jackrabbit简介 Jackrabbit 是一个完全用 Java 编写的 JCR(Java Content Repository)实现,它可以作为一个独立的服务运行,也可以嵌入到更大的应用...
为了运行这些实例,确保你已经配置好Eclipse环境,并且安装了Apache Jackrabbit的库。你可以将jackrabbittest文件夹导入Eclipse作为Java项目,然后按照项目中的说明文档运行各个示例。通过实践,你将逐步熟悉...
HTML文档通常会提供详细的API参考,包括类、接口、方法和属性的说明,以及示例代码,帮助开发者更好地理解和使用Apache Jackrabbit。通过阅读这些文档,开发者可以学习如何初始化Repository,创建和管理Session,...
此外,了解如何配置存储库(如在示例中手动配置)、集成日志系统(如 log4j)以及处理不同数据类型(例如 `Value` 和 `StringValue`)也很重要。 Jackrabbit 还支持其他高级功能,如事件监听、安全性管理和内容同步...
jackrabbit 1.5.6 jar
jackrabbit-standalone-1.6.5.jar是webDav的支持jar包。
标题中的“查看jackrabbit仓库的小工具”指的是一个用于观察和管理Apache Jackrabbit仓库的实用程序。Jackrabbit是Java Content Repository (JCR) API的一个开源实现,它提供了一个内容管理系统(CMS)的基础框架,...
例如,可以使用DefaultRepositoryFactory创建一个默认配置的Repository。 3. 登录与会话:通过Repository的login方法,可以创建一个Session对象,用于执行实际的操作。登录时通常需要提供认证信息,如用户名和密码...
jackrabbit-webdav-2.1.0.jar 具体用法可以网上查找
Apache Jackrabbit 2.6 是一个开放源代码的、基于Java的内容管理系统(CMS),它实现了JCR(Java Content Repository)规范,提供了一种用于存储、管理和检索非结构化数据的标准接口。Jackrabbit 提供了一个高性能、...
jackrabbit开发用jar包,jackrabbit是基于Lucene的一种站内搜索技术,它用xml文件为他的元数据,自动穿件索引,使用xpath或者xquery的查询方法。
4. SolrJ:Solr的Java客户端,简化了与Solr服务器的交互,如索引构建和查询操作。 5. Suller:SolrJ的扩展,提供了额外的功能和更好的文档支持,便于开发者集成Solr。 6. 开源软件:开源项目的优点包括透明度、社区...
杰克兔(Jackrabbit)是Apache软件基金会的一个开源项目,它是一个完全实现JSR 170(Java Content Repository API,即JCR)规范的内容管理系统(CMS)内核。JCR提供了一种标准的方式来访问和管理半结构化数据,如网页...
杰克兔(Jackrabbit)是Apache软件基金会的一个项目,它是一个完全实现WebDAV协议的Java库。WebDAV是一种基于HTTP协议的协议扩展,用于用户编辑和管理存储在远程服务器上的文档。Jackrabbit提供了对WebDAV协议的...
jackrabbit-api-1.5.0.jar
配置文件的理解和正确设置是使用 Jackrabbit 的基础,你需要了解如何根据项目需求调整这些配置。 `.project` 和 `.classpath` 文件是 Eclipse 开发环境下的项目配置文件。`.project` 文件包含了项目的元数据,如...