- 浏览: 639520 次
- 性别:
- 来自: 杭州
最新评论
-
liuche20083736:
非常好
从问题看本质: 研究TCP close_wait的内幕 -
xiaopohai85707:
优化算法与原来需求不符
过滤字符的性能调优?挤一挤还是有的 -
kmy_白衣:
生成的area图有时候 标签的数值和图标上看上去的数值不一致。 ...
OpenFlashChart2之恶心文档 -
tom&jerry:
大神,请教一个问题,按名称排序为何无效,用的2.4.3 XPA ...
深入浅出jackrabbit之十三 查询之AST和QT -
jd2bs:
改成精确匹配可以了< filter-mapping &g ...
细谈Ehcache页面缓存的使用
文章列表
简介:在前面的文章中,ahuaxuan已经指出jackrabbit查询的主体流程,主体流程只能帮助大家稍微了解一下jackrabbit的query module,要深入理解还得深入探索主体流程中的每一步。在这篇文章中ahuaxuan将着重描述AST的生成和QT(querynode tree ...
- 2009-09-10 10:12
- 浏览 3429
- 评论(1)
作者:ahuaxuan
在写文章方面,惰性心理无时无刻不折磨着我,文章的标题已经列在那里很长时间,可是我就是不愿意打开,不愿意把心中所想描绘出来。类似的情况可能也折磨着很多的其他同学。虽然jackrabbit是一个小众的框架,看的人和想看的人非常的少,但是其中确实包含了很多值得我们学习和研究的技术和实现,当然也有很多不足,需要我们去改进。所以我强迫自己继续写下去。
上一篇文章讲到高亮和及时搜索的问题,在文章的最后我也提出了一些问题,就是如果将高亮去掉,那么势必会带来一个问题,那就是小文本文件的存储问题,一般有大型网络经验的人都知道,小文本存储在磁盘上,读取性能是非 ...
- 2009-08-26 09:31
- 浏览 3751
- 评论(6)
作者,ahuaxuan
在看过前面的一系列文章之后,对于jackrabbit,我们脑海里应已经有了一幅比较清晰的图。接下来我们要思考的是如何提高搜索模块的性能。其中涉及到如何正确的使用lucene,如何让搜索模块专注的做它应该做的事 ...
- 2009-08-18 18:22
- 浏览 3609
- 评论(0)
作者:ahuaxuan
在前面的文章中,我们对jackrabbit做索引的流程有了较为深刻的认识,这个过程中包含了很多的特性,比如多线程作内存索引啊,文件系统的目录算法啊,文本提取的策略等等,在本文中,ahuaxuan将会继续描述jackrabbi ...
- 2009-08-18 18:14
- 浏览 2139
- 评论(0)
开篇
此文章的题目来自于当下的两哥之争,本意有调侃之意,但是用在本文,却无此意,我以十分真诚并且后知后觉的态度认定,p2p是未来的主要计算模型。尤其是在视频音频领域,但是将来,p2p一定会拓展到普通的计算上。
要解释清楚这个问题,我们得从当下最流行的音频视频p2p软件聊起。先来说说较为简单的一个音频p2p软件,酷狗。
酷狗的原型应该是来自于一个国外的公司,名字我已忘记,那家公司也是通过mp3的p2p下载作为主要业务,不过可惜的是在美国mp3因为版权问题非常严重,所以那家公司的最终结局只有一个,就是关门。
但是在中国就不一样了,版权问题没有这么严重,或者说相 ...
在上文中,ahuaxuan讲到了索引创建的主体流程,但是索引合并其实还有一个较为重要的细节ahuaxuan没有详细阐述。本文中,ahuaxuan将会详细阐述这个问题
本文分成两部分内容
1 考虑应用拓机时的数据正确性问题。
2 jackrabbit是如何解决这些问题的。
而这个细节将会直接影响我们对query module的改造,这个细节虽然不难,但是却很重要,是jackrabbit中一个比较重要的设计。下面让我们一起来看看这个是什么样的细节。
回顾上文,我们知道一个目录合并的主要 ...
- 2009-07-22 14:16
- 浏览 2083
- 评论(0)
我们从文本提取的逻辑中走出来,回到主体流程。
在前面的文章中,我们可以看到一次索引创建的操作,可能会产生多个
persistentindex
对象,而这些对象其实代表着一个索引目录。随着创建索引的次数越来越多,那么索引目录也在增多,但是索引目录中的数据却不是很多,所以我们需要把多个目录合并,其实也就是索引的合并。
执行这个操作的类是
IndexMerger
,看其定义为:
class IndexMerger extends Thread implements IndexListener
/*由此可见它是一个线程,并且同时充当着listener的角色,看看 ...
- 2009-07-21 17:32
- 浏览 2536
- 评论(0)
接上文,说到文本提取,在上一篇文章中,我们是管中窥豹,并没有把握住整体的流程,那么这篇文章就是用来弥补上一篇文章的不足的。
我们已经明确的知道,有一个队列,它的名字叫indexingqueue,它中存放的是待提取的document,下面我们就来看看它的生产者是谁:
1. 生产者
我们在前面的文章中提到过,VolatileIndex(内存数据)的pending队列中document数量超过10(默认值)的时候,会触发一个操作,一个多线程并发生成索引的数据,而且这个数据是存在于RamDirectory中,显然,当一个binary需要做文本提取的时候,应该也是 ...
- 2009-07-21 17:29
- 浏览 2518
- 评论(0)
用lucene作过索引的同学一定对文本提取不会陌生,但凡有binary需要作索引的地方,那就离不开文本的提取,而jackrabbit是可以存储二进制数据的,而这些二进制数据中包含的文本也是需要被搜索到的,所以jackrabbit里建索引的过程 ...
- 2009-07-21 17:27
- 浏览 3308
- 评论(0)
接上文,在上面一篇文章中,我们谈到了update中的Delete和Add
下面我们来谈谈第三个大问题,就是flush的逻辑
3 什么是flush
大家可能已经沉浸于AddNode逻辑而不能自拔了,清醒一点,我们再次回到MultiIndex#update看看,有这么一段代码:
if (flush) {
flush();
}
不知道是否有人想起flush怎么才能为true呢,当VolatileIndex处理的document超过100的时候,需要把内存中的index数据copy到persistentindex中,这个时候返回t ...
- 2009-07-14 17:53
- 浏览 2251
- 评论(0)
在上上篇文章中,我们了解了创建索引的一般流程,在上篇文章中,我们也已经明确的知道,一个node的哪些信息是需要加入到索引中去的,也就是jackrabbit是如何来创建document的。那么接下来我们就是要了解jackrabbit是如何把这些document加入到索引文件中去的。
接下来我们需要回顾一下索引概览中的最后几句话:
那么代码的主要逻辑在哪里呢?
在DeleteNode和AddNode类中,还有就是在flush方法中。
这句话充分了说明本文需要描述的内容,那便是
1 如何把document从index删除
2 如何把document放到index中
3 什么是flush
...
- 2009-07-14 09:10
- 浏览 2933
- 评论(2)
/**
*作者:ahuaxuan 张荣华
*日期:2009-07-01
**/
在上一篇文章中,ahuaxuan描述了jackrabbit中创建index的主体流程,同时也曾提到,在创建流程中有一个方法非常重要,它影响着整个query体系,这个方法便是createDocument。在本文中,ahuaxuan将和大家一起来探讨如何根据一个node来创建对应的document。
二话不说,直接切入正题,让我们首先来看看SearchIndex#createDocument方法,从这个方法里包含着创建document的逻辑,方法中加入了ahuaxuan的注释:
protected Documen ...
- 2009-07-01 13:03
- 浏览 4299
- 评论(0)
任何一个数据库都离不开一个技术----索引技术,jackrabbit作为内容仓库的开源实现亦不能例外,从前面的文章中我们已经清楚的知道jackrabbit使用lucene来进行索引任务和查询任务。而查询正是基于索引,所以在本文中,ahuaxuan将和 ...
- 2009-06-30 08:51
- 浏览 5370
- 评论(2)
/**
*author: ahuaxuan
*date: 2009-06-20
*/
查询进阶
在第一篇文章的例子中,我们看到jackrabbit中存放数据的流程还是比较清晰的,而且我们也基本确定了其中数据的存储方式,一颗m叉树。
正如db一样,insert都是看上去相对简单的,select相对总是没有这么简单的,如同关系数据库一样,jackrabbit中查询也有类似的流程,一般来说分成三个部分:1解析查询语句,2查询,3返回结果。这个应该是一个比较通用的模型。Jackrabbit的search部分亦不过如此。下面我们来看一个search的小例子。
public static void ...
- 2009-06-20 10:29
- 浏览 6290
- 评论(5)
有关癌症--看完再寄给别人-功德无量
三十多年前有一位服务于公卖局台北啤酒厂的张先生,参加该啤酒厂选派技术人员到国外深造的考试,以优异的成绩及格。但在出国前经某公立医院体检发现,罹患有像孩拳头大小的肺部肿瘤,因而不能出国。
张先生失望之余,一直怀疑诊断有误;于是再到另一家医院检查,结果还是证实原来的诊断并无错误。当时年轻力壮的张先生得到这样的绝症,在人生绝望之余,多次打电话给当时任职台东县政府黄顺兴县长机要秘书的魏姓同学。
魏姓同学便利用星期日赶到台北和张先生见面,张先生向魏同学详述相关绝望的详情和悲观感受,并请魏同学协助其料理后事,恰逢魏同学与前任马偕医院的院长(1949-55 ,专精于癌 ...
- 2009-06-19 10:19
- 浏览 2259
- 评论(2)