`
qindongliang1922
  • 浏览: 2172296 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117112
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125452
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59557
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71037
社区版块
存档分类
最新评论

Lucene4.3开发之第九步之渡劫中期(九)

阅读更多
转载请务必注明,原创地址,谢谢配合!
http://qindongliang1922.iteye.com/



散仙,这段时间写了几篇关于lucene仙界篇的文章,同时,修真篇的文章也并没从此就到此结束,修真嘛,基础很重要,就像学JAVA一样,JAVA的一些基本API的用法和基础都是非常重要的,所以,必须的反复学习和巩固,那么散仙今天来写一下在lucene4.x中,lucene的索引文件的几种格式,以及它们的作用和结构。

下图是一个典型的Lucene4.x的索引结构图:




Lucene4.x之后的所有索引格式如下所示:
文件名后缀描述
Segments Filesegments.gen, segments_N存储段文件的提交点信息
Lock Filewrite.lock文件锁,保证任何时刻只有一个线程可以写入索引
Segment Info.si存储每个段文件的元数据信息
Compound File.cfs, .cfe复合索引的文件,在系统上虚拟的一个文件,用于频繁的文件句柄
Fields.fnm存储域文件的信息
Field Index.fdx存储域数据的指针
Field Data.fdt存储所有文档的字段信息
Term Dictionary.timterm字典,存储term信息
Term Index.tipterm字典的索引文件
Frequencies.frq词频文件,包含文档列表以及每一个term和其词频
Positions.prx位置信息,存储每个term,在索引中的准确位置
Norms.nrm.cfs, .nrm.cfe存储文档和域的编码长度以及加权因子
Per-Document Values.dv.cfs, .dv.cfe编码除外的额外的打分因素,
Term Vector Index.tvxterm向量索引,存储term在文档中的偏移距离
Term Vector Documents.tvd包含每个文档向量的信息
Term Vector Fields.tvf存储filed级别的向量信息
Deleted Documents.del存储索引删除文件的信息


复合索引文件是指,除了段信息文件,锁文件,以及删除的文件外,其他的一系列索引文件压缩一个后缀名为cfs的文件,意思,就是所有的索引文件会被存储成一个单例的Directory,而非复合索引是灵活的,可以单独的访问某几个索引文件,而复合索引文件则不可以,因为其压缩成了一个文件,所以在某些场景下能够获取更高的效率,比如说,查询频繁,而不经常更新的需求,就很适合这种索引格式。

lucene索引的基本概念组成由,索引,文档,域和项组成,一个索引,通常包含一些序列的文档,一个文档包含一些序列的域,而一些域又包含一些序列的项,而一些项则包含一些列序列的最低层的字节,注意这里的序列指的是在索引结构中有序,通常有序的这种方式,某些情况可以优化索引结构。


lucene使用了倒排索引(Inverted Indexing),来存储索引信息,大大提高了检索效率,
倒排索引,举一个通俗的例子,原来基于人们的正常思维,我们会存储的是一个文章中出现了那几个单词,而倒排索引,却恰恰相反,它存储的是这个单词,包含在几个文档中,当然这个关系是由倒排链表(存储一系列docid)构成的索引,我们在检索时,通过这个单词可以快速的定位,它出现在几篇文章中,从而大大提升了检索性能。

当然lucene中不仅仅有倒排索引,也有正向的存储,而倒排之所以是lucene的核心,是因为它提升了检索性能,在检索到一个个具体的文档时,就需要我们正向的拿出这些信息,反映在实际的代码中就是我们通过检索获取一个个docid,然后通过一个个docid获取整个文档,然后我们在正向的获取各个域,以及各个项存储的具体信息,当然前提是你存储了这个字段,如果你只是索引了,而并没有存储,那么你只能检索到此条信息,但无法获取具体term的值,这个需要在建索引之前就要设计好,索引的存储结构,那些字段是检索的,那些字段是存储的等等,如果你还需要高亮一些内容,则还需要存储这个域的偏移的位置,通过这样就能准确的在文中标记检索命中的关键词,如果你打算在前台来完成这个高亮,就不要存储这些信息了。

转载请务必注明,原创地址,谢谢配合!
http://qindongliang1922.iteye.com/

  • 大小: 70.5 KB
分享到:
评论

相关推荐

    lucene4.3源码

    Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会...

    lucene4.3 按坐标距离排序

    在IT领域,Lucene是一个非常著名的全文搜索引擎库,由Apache软件基金会开发。它提供了一个可扩展的、高性能的搜索框架,使得开发者能够轻松地在应用程序中实现全文检索功能。在"lucene4.3 按坐标距离排序"这个主题中...

    lucene4.3工具类

    lucene4.3增删改查的的一个工具类,对新手来说是一份不可多得的入门资料。

    lucene 4.3所用到的包

    全文检索lucene 4.3 所用到的3个jar包,包含lucene-queryparser-4.3.0.jar、 lucene-core-4.3.0.jar、lucene-analyzers-common-4.3.0.jar。

    Lucene4.3src 源代码

    lucene4.3源代码 censed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information ...

    lucene-4.3.1资源

    Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。在Java编程环境中,它为开发者提供了强大的文本检索功能,使得在海量数据中快速查找相关信息变得简单易行。本篇文章将详细探讨Lucene 4.3.1版本的...

    基于lucene4.3的知识图谱搜索引擎XunTa(一种用"知识点"来找人的搜人引擎).zip

    1.XunTa是在lucene4.3上创建的通过“知识点”来找人的搜人引擎。  输入一个关键词(或组合),XunTa返回一个排名列表,排在前面的人是与该关键词(组合)最相关的“达人”。  可访问 http://www.xunta.so立即体验...

    lucene的IKAnalyzer以及兼容4.3

    本文将深入探讨IKAnalyzer的特性和其在Lucene 4.3中的兼容性问题及其解决方案。 **IKAnalyzer简介** IKAnalyzer( Intelligent Keyword Analyzer)是一款基于Java实现的中文分词工具,它主要针对中文的特性进行了...

    基于lucene的开发JavaEE项目

    《基于Lucene的JavaEE项目开发详解》 在信息技术领域,搜索引擎已经成为不可或缺的一部分,而Lucene作为开源全文搜索引擎库,以其高效、灵活的特点被广泛应用于各种JavaEE项目中。本项目将深入探讨如何利用Lucene...

    Lucene3.4开发入门.pdf

    Lucene3.4开发入门.pdf

    lucene2.9开发指南

    - **建立索引**:这是Lucene搜索的第一步,涉及将数据转换为可搜索的索引结构。这通常包括读取数据源(如文件或数据库),然后将内容解析为文档,并使用分析器对文档内容进行分词。 - **搜索索引**:一旦索引建立...

    Lucene.net开发最全文档

    **Lucene.net 开发完全指南** Lucene.net 是一个开源的全文搜索引擎库,它是 Apache Lucene 的 .NET 版本,适用于 .NET 平台。Lucene.net 提供了高效、可扩展的搜索功能,广泛应用于网站内容检索、文档搜索、数据库...

    Lucene开发详解.pdf

    ### Lucene开发详解 #### 一、Lucene简介 Lucene是一个高性能、全功能的文本搜索引擎库,由Doug Cutting创建并捐赠给Apache Software Foundation。它主要用于构建全文搜索应用程序,能够帮助开发者快速地在其应用...

    Lucene开发手册

    【Lucene开发手册】 Lucene是一个开源的全文检索库,由Apache软件基金会开发,主要用Java编写。作为一套API,Lucene提供了构建高效、可扩展的搜索引擎所需的核心工具。它并非一个完整的搜索引擎产品,而是一个搜索...

    基于lucene.net开发的个人知识库

    《基于Lucene.Net开发的个人知识库》 在信息技术领域,高效的信息检索和管理是至关重要的。Lucene.Net,作为Apache Lucene项目的一个.NET版本,为开发者提供了强大的全文搜索引擎库,使得开发者能够轻松构建自己的...

    Lucene开发指南

    《Lucene开发指南》是一份综合性的学习资料,旨在帮助开发者深入理解和熟练运用Apache Lucene这一强大的全文搜索引擎库。Lucene是Java语言实现的开源项目,广泛应用于信息检索、数据分析和大数据处理等领域。本指南...

    lucene开发流程

    开发流程的第一步是从各种数据源(如新闻、论坛、博客)中获取信息。这通常涉及到与数据库交互,通过SQL查询或API接口来获取需要的数据。 2. **数据预处理**: 获取到原始数据后,需要对其进行预处理,这包括读取...

    Lucene搜索引擎开发权威经典(附盘源码)【于天恩】.zip

    《Lucene搜索引擎开发权威经典》是由于天恩编著的一本深入探讨Lucene搜索引擎开发的专业书籍,这本书结合源码分析,旨在帮助读者掌握Lucene的核心技术和应用实践。Lucene是Apache软件基金会的一个开放源代码项目,它...

    lucene 的开发包6.6

    《Apache Lucene 6.6 开发详解》 Apache Lucene 是一个开源全文搜索引擎库,由Java编写,设计为高性能、可扩展的信息检索应用程序。它提供了丰富的搜索功能,包括索引、查询、排序等,被广泛应用于各种信息管理和...

Global site tag (gtag.js) - Google Analytics