`

【Lucene3.0 初窥】索引文件格式(2):文件结构总体框架

阅读更多

Lucene使用文件扩展名标识不同的索引文件。如.fnm文件存储域Fields名称及其属性,.fdt存储文档各项域数据,.fdx存储文档在fdt中的偏移位置即其索引文件,.frq存储文档中term位置数 据,.tii文件存储term字典,.tis文件存储term频率数据,.prx存储term接近度数据,.nrm存储调节因子数据,另外 segments_X文件存储当前最新索引片段的信息,其中X为其最新修改版本,segments.gen存储当前版本即X值。

 

本系列文章将详细介绍的这些文件的数据存储细节。下面的图描述了一个典型的lucene索引文件列表:

它们的关系图则如下所示:

 

 

其中, Segments是一个比较特殊的结构:

  • 一个索引可以包含多个段,段与段之间是独立的,添加新文档可以生成新的段,不同的段可以合并。
  • 如上图,具有相同前缀文件的属同一个段,图中共两个段 "_0" 和 "_1"。
  • segments.gen和segments_5是段的元数据文件,也即它们保存了段的属性信息

 

 

《索引文件格式》专题用例

 

在后面详细介绍每个索引文件的时候,都会使用一个例子中的数据进行分析。而这个例子就是《索引创建(5):索引数据池及内存数据细节 》中在内存中所建立好的那个倒排索引的例子。这里再次详细说明一下,后面将不再对这个例子做出说明:


 

(1)待索引文件集合一共四篇文档,分别是

文档名

文档路径 文档内容
lucene 1 E:\实验\content\lucene 1.txt lucene lucene lucene lucene lucene term .
lucene 2 E:\实验\content\lucene 2.txt lucene lucene lucene lucene lucene term term.
lucene 3 E:\实验\content\lucene 3.txt term term term lucene lucene lucene lucene lucene.
lucene 4 E:\实验\content\lucene 4.txt term

 

(2)内存源数据组织形式(Document/Fields) 参见《索引创建(1):IndexWriter索引器 》中的索引创建代码:

Java代码
  1. for  (每个文本文件) {       
  2.          //Lucene的文档结构     
  3.          Document doc = new  Document();                         
  4.          //文件名称,可查询,不分词     
  5.          String fileName=file.getName().substring(0 ,file.getName().indexOf( "." ));    
  6.          doc.add(new  Field( "name" ,fileName, Field.Store.YES, Field.Index.NOT_ANALYZED));      
  7.           //文件路径,可查询,不分词     
  8.          String filePath=file.getPath();    
  9.          doc.add(new  Field( "path" , filePath, Field.Store.YES, Field.Index.NOT_ANALYZED));    
  10.         //文件内容,需要检索     
  11.          doc.add(new  Field( "content" new  FileReader(file)));                
  12.          //使用索引器对Document文档建索引     
  13.         standardWriter.addDocument(doc);      
  14. }     
for (每个文本文件) {     
         //Lucene的文档结构  
         Document doc = new Document();                       
         //文件名称,可查询,不分词  
         String fileName=file.getName().substring(0,file.getName().indexOf("."));  
         doc.add(new Field("name",fileName, Field.Store.YES, Field.Index.NOT_ANALYZED));    
          //文件路径,可查询,不分词  
         String filePath=file.getPath();  
         doc.add(new Field("path", filePath, Field.Store.YES, Field.Index.NOT_ANALYZED));  
        //文件内容,需要检索  
         doc.add(new Field("content", new FileReader(file)));              
         //使用索引器对Document文档建索引  
        standardWriter.addDocument(doc);    
}   

这样,其数据源在Lucene的内存结构Document, Field表示如下:

 

真实文档名

Document对象
lucene 1 doc1
lucene 2 doc2
lucene 3 doc3
lucene 4 doc4

 

每个document包含的Field信息如下(以doc1举例):

域名 域数据值

是否被索引

(Indexed)

是否被存储

(Stored)

Field1 "name" "lucene 1"
     Y         N
Field2 "path" "E:\实验\content\lucene 1.txt"
     Y         N
Field3 "content" lucene lucene lucene lucene lucene term .      Y         N

 

(3)内存索引表的结构如:《索引创建 (5):索引数据池及内存数据细节 》中所述。

分享到:
评论

相关推荐

    lucene3.0核心jar包

    这里的"lucene3.0核心jar包"是 Lucene 的一个重要版本,发布于2009年,为当时的开发人员提供了构建全文搜索引擎的基础框架。 在 Lucene 3.0 中,以下几个关键知识点值得关注: 1. **索引结构**:Lucene 使用倒排...

    Lucene 3.0 原理与代码分析完整版

    《Lucene 3.0 原理与代码分析完整版》是一本深入解析Lucene 3.0搜索引擎库的专业书籍。Lucene是Apache软件基金会的开源项目,它为Java开发者提供了一个高性能、全文检索的工具包,广泛应用于各种信息检索系统。这...

    Lucene 3.0完成入门

    - **索引**:Lucene 的核心是索引,它是一种预处理步骤,将文档内容转换为便于快速搜索的数据结构。 - **分词**:Lucene 使用分词器(Tokenizer)将文档拆分为单独的词汇项(Tokens),这是建立索引的基础。 - **...

    lucene3.0-api.CHM

    总结,Lucene 3.0 API提供了一套完整的框架,用于构建高效的全文搜索引擎。开发者可以通过这个API对文本数据进行索引、查询、排序和过滤,以满足各种信息检索需求。了解并熟练掌握这些概念和组件,对于开发高质量的...

    lucene3.0 api jar

    2. **索引存储**:索引是通过`Directory`接口实现的,常见的实现有FSDirectory(文件系统目录)和RAMDirectory(内存目录)。`IndexWriter`在创建索引时会使用`Directory`来保存索引数据。 3. **查询解析**:用户...

    lucene3.0全文检索入门实例

    **Lucene 3.0 全文检索入门实例** Lucene 是一个开源的全文检索库,由 Apache 软件基金会开发。它提供了一个高级、灵活的搜索功能框架,允许开发者在自己的应用中轻松地集成全文检索功能。本文将重点介绍如何使用 ...

    lucene3.0

    《深入理解Lucene 3.0:开源全文检索框架解析》 Lucene是一个高性能、可扩展的信息检索库,由Apache软件基金会开发并维护。作为Java编写的核心搜索库,Lucene为开发者提供了强大的文本分析和索引功能,是构建全文...

    lucene3.0基础实例

    在Lucene 3.0版本中,它已经相当成熟且稳定,为开发者提供了一个构建高效搜索应用的框架。 二、Lucene 3.0核心概念 1. 文档(Document):文档是信息的基本单位,可以包含多个字段(Field),如标题、内容等。 2. ...

    lucene 3.0 中的demo项目部署

    本文将深入探讨如何部署Lucene 3.0中的Demo项目,帮助读者更好地理解和运用这个强大的搜索框架。 首先,我们需要了解Lucene的基本架构。Lucene的核心组件包括Analyzer(分析器)、IndexWriter(索引写入器)、...

    适合lucene3.0用的paoding-analysis的jar包

    《深入理解Lucene3.0与Paoding-Analysis集成应用》 在信息检索领域,Apache Lucene是一款强大的全文搜索引擎库,被广泛应用于各种信息检索系统。Lucene3.0是其历史版本之一,具备高效、灵活的特点。在这个版本中,...

    lucene3.0 in action

    《Lucene 3.0 在行动》:深入理解与应用 在IT领域,尤其是在搜索技术方面,Lucene无疑是一颗璀璨的明星。本书《Lucene 3.0 In Action》被誉为是最好的Lucene学习教程,是入门者的福音。下面将详细解析此书提及的...

    汤阳光_Lucene3.0课程

    【Lucene3.0课程】主要讲解了如何利用Lucene这一全文检索库来实现站内搜索功能,如在BBS、BLOG、电子商务网站中搜索文章或商品信息。Lucene被广泛应用,包括Eclipse、Jira等多个知名项目。全文检索是针对文本内容的...

    Lucene3.0浅析

    Lucene3.0还引入了新的查询类型和多关键字查询方法,增强了对Unicode的支持,推出了新的查询分析框架,以及对地理位置查询的支持,允许基于距离进行文档过滤和排序。 三、2.9与3.0的对比 尽管2.9版本为3.0做了铺垫...

    lucene3.0入门

    总结,Lucene 3.0 是一个强大的全文搜索引擎框架,通过 Indexer 和 Searcher 的实现,我们可以快速构建起一个简单的搜索引擎。尽管当前版本已经较旧,但它仍然能为我们提供宝贵的实践经验,帮助我们理解搜索引擎的...

    Lucene3.0_使__用_教_程.doc

    《Lucene3.0使用教程》旨在介绍如何利用Apache Lucene这个开源全文检索框架来实现高效、精准的文本搜索功能。Lucene是一个强大的搜索引擎库,广泛应用于站内搜索,如论坛、博客、网上商店的商品搜索等。在学习Lucene...

    Lucene3.0课程

    【Lucene3.0课程】主要讲解了全文检索技术,这是一种强大的工具,能够对大量文本内容进行精确查找,并且能够突出显示检索结果中的关键词。全文检索不仅限于搜索引擎,也广泛应用于各种系统内部的搜索功能,如Windows...

    Lucene in Action 2nd

    ### Lucene in Action 第二版 – Apache Lucene 3.0 深度解析 #### 知识点一:Lucene 简介与应用场景 Lucene 是一个高性能、全功能的文本搜索库,它为开发者提供了构建强大搜索应用的能力。本书《Lucene in Action...

Global site tag (gtag.js) - Google Analytics