lucene 写文件的装饰者 + 责任链 模式,当时看的我是一头雾水。
其实本来是很简单的,写的文件无非就是字段信息和term信息,但是lucene要保证多线程,所以很多方法后面有个PerThread。为了保证功能的单一和可扩展性,用了很多的Consumer,而这些Consumer的源头是Processor。最后问了实现filed的重用,有很多的类是以PerField结尾的。
链同基本索引链有相似的树形结构,由基本索引链中每个层次的对象调用addThreads
进行创建的,负责每个线程的对文档的处理。
DocFieldProcessorPerThread 是线程索引链的源头,由DocFieldProcessor.addThreads(…)创建
DocFieldProcessorPerThread 对象结构如下:
对索引域进行处理
DocFieldConsumerPerThread consumer 类型为 DocInverterPerThread , 由
DocInverter.addThreads 创建
InvertedDocConsumerPerThread consumer 类型为TermsHashPerThread , 由
TermsHash.addThreads 创建
TermsHashConsumerPerThread consumer 类型为
FreqProxTermsWriterPerThread,由FreqProxTermsWriter.addThreads 创建,
负责每个线程的freq,prox 信息处理
TermsHashPerThread nextPerThread
TermsHashConsumerPerThread consumer 类型
TermVectorsTermsWriterPerThread,由TermVectorsTermsWriter 创建,
负责每个线程的tvx,tvd,tvf 信息处理
InvertedDocEndConsumerPerThread endConsumer 类型为
NormsWriterPerThread,由NormsWriter.addThreads 创建,负责nrm 信息的处理
114
对存储域进行处理
StoredFieldsWriterPerThread fieldsWriter 由StoredFieldsWriter.addThreads 创建,负责
fnm,fdx,fdt 的处理。
FieldInfos fieldInfos;
域索引链:
每个域也有自己的索引链,称为域索引链,每个域的索引链也有同线程索引链有相似的树形结
构,由线程索引链中每个层次的每个层次的对象调用addField 进行创建,负责对此域的处理。
和基本索引链及线程索引链不同的是,域索引链仅仅负责处理索引域,而不负责存储域的处
理。
DocFieldProcessorPerField 是域索引链的源头,对象结构如下:
DocFieldConsumerPerField consumer 类型为DocInverterPerField,由
DocInverterPerThread.addField 创建
118
InvertedDocConsumerPerField consumer 类型为TermsHashPerField,由
TermsHashPerThread.addField 创建
TermsHashConsumerPerField consumer 类型为FreqProxTermsWriterPerField,由
FreqProxTermsWriterPerThread.addField 创建,负责freq, prox 信息的处理
TermsHashPerField nextPerField
TermsHashConsumerPerField consumer 类型为TermVectorsTermsWriterPerField,由
TermVectorsTermsWriterPerThread.addField 创建,负责tvx, tvd, tvf 信息的处理
InvertedDocEndConsumerPerField endConsumer 类型为NormsWriterPerField,由
NormsWriterPerThread.addField 创建,负责nrm 信息的处理。
用图来表示就是这链:
- 大小: 37.3 KB
- 大小: 101.5 KB
分享到:
相关推荐
【标题】"java拼车网雏形(Ext2.0+SSH+oracle10g+lucene2.4)" 涉及的核心技术是Java Web开发中的几个关键组件,包括ExtJS 2.0前端框架,Spring、Struts2和Hibernate(SSH)后端框架,Oracle 10g数据库以及Lucene ...
《庖丁解牛 源码 for Lucene 2.4》是一份针对开源全文搜索引擎Lucene 2.4版本的深度解析资料。这个压缩包包含的文件名为"paoding-for-lucene-2.4",很可能是针对中文处理的Paoding Lucene库的源代码分析或扩展。...
《Lucene 2.4与Nutch学习笔记:在多文本文档中搜索关键词》 Lucene是一个高性能、全文本搜索引擎库,它为开发者提供了在Java应用程序中实现全文搜索功能的基本工具。Nutch则是一个开源的网络爬虫项目,用于抓取...
- 提供的 "lucene总结.chm" 文件是 Lucene 2.4 的中文文档,包含了详细的 API 参考、教程和最佳实践。文档涵盖了 Lucene 的各个组件,如分析器、查询解析、索引和搜索,以及高级话题,如多字段搜索、评分策略等。 ...
本文将重点介绍 Lucene 2.4 版本的基本概念和使用方法,帮助初学者快速入门。 ### 一、Lucene 概述 1. **核心概念**:Lucene 的主要组件包括索引(Index)、文档(Document)、字段(Field)和查询(Query)。索引...
lucene 2.4 jar lucene2.4版本的JAR包
**Lucene 2.4 入门例子** Lucene 是一个高性能、全文本搜索库,由Apache软件基金会开发。它提供了强大的搜索功能,被广泛应用于各种应用中的信息检索。在这个入门例子中,我们将探讨Lucene 2.4版本的一些关键特性和...
ictclas4j for lucene 2.4 任何人不得将此用于商业用途,仅限个人学习研究之用.该开源项目遵循Apache License 2.0
### Lucene3源码分析知识点概述 #### 一、全文检索的基本原理 ##### 1. 总论 全文检索系统是一种高效的信息检索技术,能够帮助用户在海量文档中快速找到包含特定关键词的信息。Lucene是Java领域内最受欢迎的全文...
struts2 + spring2.5 + hibernate 3.2 + lucene 2.4 + compass 2.0 包含所有jar包,按readme.txt导入并运行即可 开始不用分了................
支持net4.0环境下运行,Lucene.net版本为3.0,PanGu版本为2.4
本文将主要围绕Java Lucene进行深入探讨,并基于提供的“Lucene学习源码.rar”文件中的“Lucene视频教程_讲解部分源码”展开讨论。 一、Lucene核心概念 1. 文档(Document):Lucene中的基本单位,用于存储待检索...
总结来说,Lucene 2.4.1是搜索引擎开发的重要工具,其源码的分析与学习对于提升对全文检索技术的理解至关重要。无论是熟悉核心包的类与接口,还是实践demos包中的示例,都将有助于开发者更好地利用Lucene构建高效、...
本压缩包包含的是Lucene 3.5.0版本的全部源码,对于想要深入理解Lucene工作原理、进行二次开发或者进行搜索引擎相关研究的开发者来说,是一份非常宝贵的学习资源。 Lucene 3.5.0是Lucene的一个重要版本,它在3.x...
lucene2.4手册,是开发搜索引擎的好帮手.
《深入剖析Lucene 5.0源码》 Lucene是一个高性能、全文检索库,它为Java开发者提供了在应用程序中实现全文检索功能的工具。在本文中,我们将深入探讨Lucene 5.0的源码,揭示其核心设计思想与工作原理,帮助读者更好...
lucene3.0.3源码和教程
《深入剖析Lucene.NET 2.9.1:源码解析与应用开发》 Lucene.NET 2.9.1是开源搜索引擎库Lucene的.NET版本,它为.NET开发者提供了强大的全文检索和索引功能。这个版本的源码提供了一个宝贵的资源,帮助我们理解其内部...
为了调试Lucene源码,我们需要在代码中设置断点,然后启动调试模式。 1. 在需要调试的代码行号前单击,会出现一个红点,表示设置了断点。 2. 右键点击项目,选择“Run As” -> “Java Application”。 3. Eclipse将...