`

lucene2.4源码学习3 写文件的装饰者 + 责任链 模式

 
阅读更多
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拼车网雏形(Ext2.0+SSH+oracle10g+lucene2.4)" 涉及的核心技术是Java Web开发中的几个关键组件,包括ExtJS 2.0前端框架,Spring、Struts2和Hibernate(SSH)后端框架,Oracle 10g数据库以及Lucene ...

    庖丁解牛 源码 for Lucene 2.4

    《庖丁解牛 源码 for Lucene 2.4》是一份针对开源全文搜索引擎Lucene 2.4版本的深度解析资料。这个压缩包包含的文件名为"paoding-for-lucene-2.4",很可能是针对中文处理的Paoding Lucene库的源代码分析或扩展。...

    lucene2.4+nutch学习笔记三:lucene 在多个文本文档里找出包含一些关键字的文档

    《Lucene 2.4与Nutch学习笔记:在多文本文档中搜索关键词》 Lucene是一个高性能、全文本搜索引擎库,它为开发者提供了在Java应用程序中实现全文搜索功能的基本工具。Nutch则是一个开源的网络爬虫项目,用于抓取...

    Lucene2.4完美样例+中文文档

    - 提供的 "lucene总结.chm" 文件是 Lucene 2.4 的中文文档,包含了详细的 API 参考、教程和最佳实践。文档涵盖了 Lucene 的各个组件,如分析器、查询解析、索引和搜索,以及高级话题,如多字段搜索、评分策略等。 ...

    Lucene2.4入门总结

    本文将重点介绍 Lucene 2.4 版本的基本概念和使用方法,帮助初学者快速入门。 ### 一、Lucene 概述 1. **核心概念**:Lucene 的主要组件包括索引(Index)、文档(Document)、字段(Field)和查询(Query)。索引...

    lucene 2.4 jar

    lucene 2.4 jar lucene2.4版本的JAR包

    Lucene 2.4 入门例子

    **Lucene 2.4 入门例子** Lucene 是一个高性能、全文本搜索库,由Apache软件基金会开发。它提供了强大的搜索功能,被广泛应用于各种应用中的信息检索。在这个入门例子中,我们将探讨Lucene 2.4版本的一些关键特性和...

    ictclas4j for lucene 2.4

    ictclas4j for lucene 2.4 任何人不得将此用于商业用途,仅限个人学习研究之用.该开源项目遵循Apache License 2.0

    lucene3源码分析

    ### Lucene3源码分析知识点概述 #### 一、全文检索的基本原理 ##### 1. 总论 全文检索系统是一种高效的信息检索技术,能够帮助用户在海量文档中快速找到包含特定关键词的信息。Lucene是Java领域内最受欢迎的全文...

    struts2 + spring2.5 + hibernate 3.2 + lucene 2.4 + compass 2.0产品搜索

    struts2 + spring2.5 + hibernate 3.2 + lucene 2.4 + compass 2.0 包含所有jar包,按readme.txt导入并运行即可 开始不用分了................

    Lucene.net3.0+PanGu2.4.zip

    支持net4.0环境下运行,Lucene.net版本为3.0,PanGu版本为2.4

    Lucene学习源码.rar

    本文将主要围绕Java Lucene进行深入探讨,并基于提供的“Lucene学习源码.rar”文件中的“Lucene视频教程_讲解部分源码”展开讨论。 一、Lucene核心概念 1. 文档(Document):Lucene中的基本单位,用于存储待检索...

    Lucene2.4.1

    总结来说,Lucene 2.4.1是搜索引擎开发的重要工具,其源码的分析与学习对于提升对全文检索技术的理解至关重要。无论是熟悉核心包的类与接口,还是实践demos包中的示例,都将有助于开发者更好地利用Lucene构建高效、...

    Lucene3.5源码jar包

    本压缩包包含的是Lucene 3.5.0版本的全部源码,对于想要深入理解Lucene工作原理、进行二次开发或者进行搜索引擎相关研究的开发者来说,是一份非常宝贵的学习资源。 Lucene 3.5.0是Lucene的一个重要版本,它在3.x...

    Lucene_2.4.CHM

    lucene2.4手册,是开发搜索引擎的好帮手.

    lucene5.0源码包

    《深入剖析Lucene 5.0源码》 Lucene是一个高性能、全文检索库,它为Java开发者提供了在应用程序中实现全文检索功能的工具。在本文中,我们将深入探讨Lucene 5.0的源码,揭示其核心设计思想与工作原理,帮助读者更好...

    lucene源码和教程

    lucene3.0.3源码和教程

    lucene.net 2.9.1 源码

    《深入剖析Lucene.NET 2.9.1:源码解析与应用开发》 Lucene.NET 2.9.1是开源搜索引擎库Lucene的.NET版本,它为.NET开发者提供了强大的全文检索和索引功能。这个版本的源码提供了一个宝贵的资源,帮助我们理解其内部...

    lucene 2.4.1源码在eclipse调试运行通过

    为了调试Lucene源码,我们需要在代码中设置断点,然后启动调试模式。 1. 在需要调试的代码行号前单击,会出现一个红点,表示设置了断点。 2. 右键点击项目,选择“Run As” -> “Java Application”。 3. Eclipse将...

Global site tag (gtag.js) - Google Analytics