`
wbj0110
  • 浏览: 1610688 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Lucene 源代码剖析-9索引是如何存储的

阅读更多

Lucene 源码剖析

5           索引是如何存储的

  

5.1   数据存储类Directory

    

    Directory及相关类负责文档索引的存储。

      

     

5.1.1       org.apache.lucene.store.Directory

   

一个Directory对象是一系列统一的文件列表(a flat list of files)。文件可以在它们被创建的时候一次写入,一旦文件被创建,它再次打开后只能用于读取(read)或者删除(delete)操作。并且同时在读取和写入的时候允许随机访问(random access)。

  

在这里并不直接使用Java I/O API,但是更确切地说,所有I/O操作都是通过这个API处理的。这使得读写操作方式更统一起来,如基于内存的索引(RAM-based indices)的实现(即RAMDirectory)、通过JDBC存储在数据库中的索引、将一个索引存储为一个文件的实现(即FSDirectory)。

  

Directory的锁机制是一个LockFactory的实例实现的,可以通过调用Directory实例的setLockFactory()方法来更改。

  

 

  

5.1.2       org.apache.lucene.store.FSDirectory

    

FSDirectory类直接实现Directory抽象类为一个包含文件的目录。目录锁的实现使用缺省的SimpleFSLockFactory,但是可以通过两种方式修改,即给getLockFactory()传入一个LockFactory实例,或者通过调用setLockFactory()方法明确制定LockFactory类。

  

目录将被缓存(cache)起来,对一个指定的符合规定的路径(canonical path)来说,同样的FSDirectory实例通常通过getDirectory()方法返回。这使得同步机制(synchronization)能对目录起作用。

  

 

  

5.1.3       org.apache.lucene.store.RAMDirectory

    

RAMDirectory类是一个驻留内存的(memory-residentDirectory抽象类的实现。目录锁的实现使用缺省的SingleInstanceLockFactory,但是可以通过setLockFactory()方法修改。

  

 

 

   

5.1.4       org.apache.lucene.store.IndexInput

    

IndexInput类是一个为了从一个目录(Directory)中读取文件的抽象基类,是一个随机访问(random-access)的输入流(input stream),用于所有Lucene读取Index的操作。BufferedIndexInput是一个实现了带缓冲的IndexInput的基础实现。

  

 

   

5.1.5       org.apache.lucene.store.IndexOutput

    

IndexOutput类是一个为了写入文件到一个目录(Directory)中的抽象基类,是一个随机访问(random-access)的输出流(output stream),用于所有Lucene写入Index的操作。BufferedIndexOutput是一个实现了带缓冲的IndexOutput的基础实现。RAMOuputStream是一个内存驻留(memory-resident)的IndexOutput的实现类。

   

 

   

  

http://www.cnblogs.com/eaglet/archive/2009/02/16/1391532.html

 
 
分享到:
评论

相关推荐

    .NET lucene 源代码

    标题中的".NET Lucene 源代码"表明我们将探讨的是如何在.NET环境下利用Lucene进行搜索引擎的开发,并且会涉及到源代码层面的解析。描述中提到的“简单易用”,揭示了Lucene的核心特性之一,即它对开发者友好,易于...

    Lucene源代码剖析

    《Lucene源代码剖析》是一本深度探讨Java版本Lucene搜索引擎库的专业书籍。Lucene是Apache软件基金会的一个开源项目,广泛应用于全文检索和信息检索领域。本书旨在通过深入解析其源代码,帮助开发者理解Lucene的工作...

    lucene-5.3.1源代码

    - 通过阅读源代码,可以理解Lucene的内部工作原理,如如何构建索引、执行查询等。 - 分析器部分的源码有助于了解文本预处理过程,包括分词、去除停用词等。 - 探究查询解析器的实现,掌握如何将自然语言转化为...

    lucene.net源代码

    《深入剖析Lucene.NET:基于源代码的实例解析》 Lucene.NET,作为Apache Lucene的.NET版本,是一个高性能、全文检索库,为.NET开发者提供了强大的文本搜索功能。本实例将带您深入理解Lucene.NET的内部机制,通过源...

    Lucene-2.3.1 源代码阅读学习

    《Lucene-2.3.1 源代码阅读学习》 Lucene是Apache软件基金会的一个开放源码项目,它是一个高性能、全文本搜索库,为开发者提供了在Java应用程序中实现全文检索功能的基础架构。本篇文章将深入探讨Lucene 2.3.1版本...

    CLucene源代码-Lucene的C++版本

    开发者可以查看和修改源代码,了解索引构建、查询解析、搜索执行等核心流程,这对于开发自定义的搜索引擎或扩展现有功能非常有用。通过学习CLucene,你可以掌握如何在C++中实现高效的文本分析、索引构建和搜索策略。...

    lucene-core-2.9.2.jar

    Apache采用的是Apache License 2.0,这是一种宽松的开源许可,允许用户自由地使用、复制、修改、合并、发布、分发、再授权和/或销售软件,同时也允许用户以源代码或编译后的形式分发。了解许可条款对于遵循开源社区...

    luke 源代码(luke Lucene index 索引 源代码)

    《深入理解Luke:Lucene索引查看工具的源代码解析》 Luke,作为一个开源的Lucene索引浏览器,为开发者提供了直接查看和分析Lucene索引的能力。它不仅是一个强大的工具,也是学习Lucene索引机制的重要途径。通过阅读...

    Lucene 3.6.2 源代码

    这个源代码版本代表了Lucene 3.x系列的最后一个稳定版本,为开发者提供了深入理解Lucene内部机制的宝贵资源。下面将详细探讨Lucene 3.6.2中的关键知识点。 1. **分词器(Tokenizers)**: Lucene的核心功能之一是...

    lucene-3.0.1库及源代码

    《深入理解Lucene 3.0.1:库与源代码解析》 Lucene是一个开源全文搜索引擎库,由Apache软件基金会开发并维护。这个“lucene-3.0.1”版本代表了Lucene在2009年的一个重要里程碑,它提供了强大的文本检索功能,被广泛...

    Incubating-Apache-Lucene.Net-2.0-004-11Mar07.bin.zip

    9. **内存和磁盘管理**:Lucene.Net可以有效地管理索引的存储,支持磁盘上的索引和内存中的部分缓存,平衡性能和资源消耗。 10. **分布式搜索**:虽然2.0版本可能不包含完整的分布式搜索功能,但Lucene.Net后续版本...

    Lucene-core-2.0.0

    1. **Lucene概述**: Lucene是Apache软件基金会的一个开放源代码项目,它是Java语言编写的信息检索库。它提供了高级的索引和搜索功能,支持分词、布尔运算、短语搜索、近似搜索等多种搜索模式。 2. **Lucene核心组件...

    lucene索引查看程序及代码

    通过阅读和分析源代码,我们可以学习到如何操作Lucene索引,以及如何构建类似的工具。 总结而言,luke作为Lucene索引的可视化工具,极大地便利了开发者对索引的理解和调试。无论是初学者还是经验丰富的开发人员,都...

    lucene-2.9.4-src.zip

    《Apache Lucene 2.9.4源代码解析》 Apache Lucene是一个开源全文搜索引擎库,由Java编写,被广泛应用于各种搜索应用中...无论是对搜索技术的探索,还是在实际项目中的应用,深入研究Lucene源代码都能带来极大的收益。

    lucene第一步---5.中文分词IKAnalyzer和高亮highlighter的使用

    Lucene是Apache软件基金会的一个开放源代码项目,它是一个全文搜索引擎库,提供了文本分析、索引和搜索的基本功能。 1. **Lucene简介** Lucene是一个高性能、全文本检索库,可集成到各种系统中,用于构建强大的...

    lucene-4.2.1-src.tgz

    Lucene 4.2.1是这个库的一个版本,它包含了源代码,允许开发者深入理解其工作原理,并根据需要进行定制和扩展。 在Lucene 4.2.1中,你可以找到以下关键知识点: 1. **索引构建**:Lucene的核心功能之一是能够高效...

    Lucene.net-4.8.0 -new Bate.rar

    Lucene.Net提供了多种内置分析器,如标准分析器(StandardAnalyzer)、盘古分析器(PanguAnalyzer),也可自定义分析器以满足特定的语言或业务需求。 3. **文档(Document)**:文档是信息的基本单位,可以包含多个...

    Apache-Lucene.Net-3.0.3-RC2.bin

    5. **存储与内存管理**:Lucene.Net提供了磁盘和内存的存储机制,如RAMDirectory和FSDirectory,分别用于内存和磁盘上的索引存储。 6. **更新和删除**:Lucene.Net支持对索引的更新和删除操作,包括添加新文档、...

    luke源码--查看lucene索引文件

    源码目录(src)是Luke的核心部分,包含了所有Java源代码,这些代码负责解析、显示和解释Lucene索引。通过阅读和研究源码,我们可以了解到Luke如何读取索引段、字段和文档,以及如何展示这些信息。例如,Luke提供了...

Global site tag (gtag.js) - Google Analytics