lucene创建IndexWriter 对象

2012-05-10

IndexWriter writer = new IndexWriter(FSDirectory.open(INDEX_DIR), new StandardAnalyzer(Version.LUCENE_CURRENT), true, IndexWriter.MaxFieldLength.LIMITED); IndexWriter对象主要包含以下几方面的信息: 阅读全文 »

lucene索引过程体系结构

2012-05-10

Lucene 3.0的搜索要经历一个十分复杂的过程,各种信息分散在不同的对象中分析,处理,写入,为了支持多线程,每个线程都创建了一系列类似结构的对象集,为了提高效率,要复用一些对象集,这使得索引过程更加复杂。 阅读全文 »

lucene索引过程分析1

2012-05-08

对于Lucene的索引过程,除了将词(Term)写入倒排表并最终写入Lucene的索引文件外,还包括分词(Analyzer) 和合并段(merge segments)的过程,本次不包括这两部分,将在以后的文章中进行分析。 Lucene的索引过程,很多的博客,文章都有介绍,推荐大家上网搜一篇文章:《Annotated Lucene》,好像 中文名称叫《Lucene源码剖析》是很不错的。 想要真正了解Lucene索引文件过程,最好的办法是跟进代码调试,对着文章看代码,这样不但能够最详细准确 的掌握索引过程(描述都是有偏差的,而代码是不会骗你的),而且还能够学习Lucene的一些优秀的实现,能够 在以后的工作中为我所用,毕竟Lucene是比较优秀的开源项目之一。 由于Lucene已经升级到3.0.0了,本索引过程为Lucene 3.0.0的索引过程。 阅读全文 »

lucene总体结构

2012-05-08

图示为Lucene索引文件的整体结构: 属于整个索引(Index)的segment.gen,segment_N,其保存的是段(segment)的元数据信息,然后分多个segment保存数据信息,同一个segment有相同的前缀文件名。 对于每一个段,包含域信息,词信息,以及其他信息(标准化因子,删除文档)域信息也包括域的元数据信息,在fnm中,域的数据信息,在fdx,fdt中。 词信息是反向信息,包括词典(tis, tii),文档号及词频倒排表(frq),词位置倒排表(prx)。 大家可以通过看源代码,相应的Reader和Writer来了解文件结构,将更为透彻。 阅读全文 »

lucene删除文档文件(del)

2012-05-08

被删除文档文件(Deleted Document File: .del) Format:在此文件中,Bits和DGaps只能保存其中之一,-1表示保存DGaps,非负值表示保存Bits。 ByteCount:此段中有多少文档,就有多少个bit被保存,但是以byte形式计数,也即Bits的大小应该是byte的倍数。 BitCount:Bits中有多少位被至1,表示此文档已经被删除。 Bits:一个数组的byte,大小为ByteCount,应用时被认为是byte*8个bit。 DGaps:如果删除的文档数量很小,则Bits大部分位为0,很浪费空间。DGaps采用以下的方式来保存稀疏数组:比如第十,十二,三十二个文档被删除,于是第十,十二,三十二位设为1,DGaps也是以byte为单位的,仅保存不为0的byte,如第1个byte,第4个byte,第1个byte十进制为20,第4个byte十进制为1。于是保存成DGaps,第1个byte,位置1用不定长正整数保存,值为20用二进制保存,第2个byte,位置4用不定长正整数保存,用差值为3,值为1用二进制保存,二进制数据不用差值表示。 阅读全文 »

lucene标准化因子文件(nrm)

2012-05-08

为什么会有标准化因子呢?从第一章中的描述,我们知道,在搜索过程中,搜索出的文档要按与查询语句的相关性排序,相关性大的打分(score)高,从而排在前面。相关性打分(score)使用向量空间模型(Vector Space Model),在计算相关性之前,要计算Term Weight,也即某Term相对于某Document的重要性。在计算Term Weight时,主要有两个影响因素,一个是此Term在此文档中出现的次数,一个是此Term的普通程度。显然此Term在此文档中出现的次数越多,此Term在此文档中越重要。 阅读全文 »

lucene词位置(prx)信息

2012-05-06

lucene词位置信息也是倒排表,也是以跳跃表形式存在的。 阅读全文 »

lucene文档号及词频(frq)信息

2012-05-04

文档号及词频文件里面保存的是倒排表,是以跳跃表形式存在的。 阅读全文 »

lucene文件格式-反向索引,词典及词典索引

2012-05-02

反向信息是索引文件的核心,也即反向索引。 反向索引包括两部分,左面是词典(Term Dictionary),右面是倒排表(Posting List)。 阅读全文 »

lucene词向量(Term Vector)的数据信息(.tvx ,.tvd,.tvf)

2012-05-02

词向量信息是从索引(index)到文档(document)到域(field)到词(term)的正向信息,有了词向量信息,我们就可以得到一篇文档包含那些词的信息。 阅读全文 »