`

Luence组织结构

 
阅读更多

1Luence系统的组织结构

Luence最初是Apache软件基金会Jakarta项目组的一个子项目,是一个完全开放源码的全文检索工具包。

Lucene的系统结构具有强烈的面向对象特征。首先是定义了一个与平台无关的索引文件格式,其次通过抽象将系统的核心组成部分设计为抽象类,具体的平台实现部分设计为抽象类的实现,此外与具体平台相关的部分比如文件存储也封装为类,经过层层的面向对象式的处理,最终达成了一个低耦合高效率,容易二次开发的检索引擎系统[8]。

Lucene的系统由基础结构封装、索引核心、对外接口三大部分组成。其中直接操作索引文件的索引核心又是系统的重点。Lucene将所有源码分为了7个模块(Java语言中以包来表示),各个模块所属的系统部分也如上图所示。需要说明的是org.apache.lucene.queryPaser是作为org.apache.lucene.search的语法解析器存在,不被系统之外实际调用,因此这里没有当作对外接口看待,而是将之独立出来。从面向对象的观点来考察,Lucene应用了最基本的一条程序设计准则:引入额外的抽象层以降低耦合性。首先,引入对索引文件的操作org.apache.lucene.store的封装,然后将索引部分的实现建立在 (org.apache.lucene.index)之上,完成对索引核心的抽象。在索引核心的基础上开始设计对外的接口。org.apache.lucene.seareh与。org.apache.lucene.analysis。在每一个局部细节上,比如某些常用的数据结构与算法上,Lucene也充分地应用了这一条准则。在高度的面向对象理论的支撑下,使得Lucene的实现容易理解,易于扩展Lucene在系统结构上的另一个特点表现为其引入了传统的客户端服务器结构以外的应用结构。Lucene可以作为一个运行库被包含进入应用本身中去,而不是作为一个单独的索引服务器存在。

2Lucene索引的数据结构

Lueene索引index由若干段(segment)组成,每一段由若干的文档(doeument)组成,每一个文档由若干的域(field)组成,每一个域由若干的项 (term)组成。项是最小的索引概念单位,它直接代表了一个字符串以及其在文件中的位置、出现次数等信息。域是一个关联的元组,由一个域名和一个域值组成,域名是一个字串,域值是一个项,比如将“标题”和实际标题的项组成的域。文档是提取了某个文件中的所有信息之后的结果,这些组成了段,或者称为一个子索引。子索引可以组合为索引,也可以合并为一个新的包含了所有合并项内部元素的子索引。

1)段(Segment)

Lucene索引可能由多个子索引组成,这些子索引称为段(Segment)。每一段都是完整独立的索引,能被搜索。索引的方式是:为新加入的文档创建新段;合并已经存在的段。搜索时可能涉及到多个段或者多个索引,每一个索引又可能由一些段组成。

2)文档(Document)

Lucene用一个整形 (Interger)的文档号来指示文档。第一个被加入到索引中的文档就是0号,顺序加入的文档将得到一个由前一个号码递增而来的号码。在删除和插入时文档号是变的,所以在Lucene外部存储这些号码时必须小心。

3)域(Field)

域 (Field)是一个关联的元组,由一个域名和一个域值组成,域名是一个字符串,域值是一个项(term),“标题”和“标题”的项可以组成一个域。标题应该会被用在搜索结果里,因此它会被作为一个字段添加到文档对象里。这些字段可以被索引,也可以不被索引,而原始的数据也可以选择保存在索引里。保存在索引里的字段在创建检索结果页面的时候会很有用。域值也可以被切分(tokenized),这就意味着一个分析程序会将输入到域里的内容分解成搜索引擎能够使用的标记(token)

4)项(Term)

项是最小的索引概念单位,它直接代表了一个字符串以及其在文件中的位置,出现次数等信息。

分享到:
评论

相关推荐

    lucene查看索引结构

    lucene查看索引结构,简易工具,3.0版本

    luence客户端测试软件luke

    "luence客户端测试软件luke" 指的是一个名为"Luke"的工具,它是针对Apache Lucene(一个流行的全文搜索引擎库)的客户端测试和分析工具。Luence可能是“Lucene”的拼写错误,但在这里我们假设指的是Lucene。 **描述...

    Luence搜索Demo

    在这个Demo中,我们可能会看到如何将文本数据(如文档、网页等)转换为Luence可理解的索引结构。索引过程包括分词、建立倒排索引等步骤,以提高查询速度。 2. **分析器(Analyzer)**:分析器在数据索引过程中起着...

    Luence.net搜索小程序

    《Luence.net搜索小程序深度解析》 在信息技术日益发达的今天,搜索引擎已成为数据挖掘与信息检索的重要工具。本文将深入探讨一款基于.NET平台的搜索引擎——Luence.net,它以其高效、灵活的特点,为开发者提供了...

    Luence原理及源码分析

    lucene 原理与分析,底层源码解析,应用场景及实践,相关配置

    Luence和ElasticSearch面试准备.docx

    《Luence和ElasticSearch面试准备》 Lucene和ElasticSearch是两个在全文搜索引擎领域中广泛使用的开源工具。Lucene是一个高性能、全文本搜索库,而Elasticsearch则是在Lucene的基础上构建的一个分布式、RESTful风格...

    动态增加组织树形结构图

    动态增加组织树形结构图是指在程序运行时能够根据需求动态添加新的节点或调整已有节点的位置,以反映组织结构的变化。 要实现动态增加组织树形结构图,首先需要理解树形数据结构。在计算机科学中,树是一种非线性...

    IKAnalyzer和luence压缩包大全

    IKAnalyzer和Lucene是两个在中文处理领域广泛应用的开源项目。IKAnalyzer是一个专门针对中文的分词工具,而Lucene则是一个全文检索框架。这里我们深入探讨这两个组件以及它们的关联。 **IKAnalyzer** 是一个高性能...

    获取全部Luence数据

    ### 获取全部Luence数据 #### 知识点详解 **Lucene** 是一个高性能、全功能的文本搜索引擎库。在本文档中,我们将探讨如何通过Lucene获取索引中的所有文档,包括创建索引、查询索引以及遍历所有文档的具体步骤。 ...

    luence4.6例子

    5. **luence46**: 这个压缩包可能包含了Lucene 4.6版本的源代码,源码提供了深入了解其内部工作原理的机会。你可以通过阅读和分析源代码,学习如何实现自己的搜索功能,或者优化现有系统的搜索性能。 通过对...

    Luence简单实例

    在"Luence简单实例"中,我们可能会看到以下步骤的Java代码实现: 1. **创建索引**: 首先,需要创建一个`IndexWriter`对象,设置好索引目录和分析器。接着,通过`Document`对象添加字段,如`add(new Field("content...

    luence索引例子

    倒排索引是一种数据结构,它将每个文档中出现的词汇与这些词汇所在的文档位置关联起来。这使得Lucene能够在几毫秒内找到包含特定关键词的文档,极大地提高了搜索效率。 描述中提到“使用luence索引数据库中的记录”...

    luence搜索

    《深入理解Lucene搜索引擎》 Lucene,作为一个开源的全文搜索引擎库,被广泛应用于各种信息检索系统中。它提供了一套高效、灵活的文本搜索解决方案,使得开发者能够快速地在大量数据中实现高效的全文检索功能。...

    Luence in Action 中英文pdf 版

    《Lucene in Action》是一本深入探讨Apache Lucene的权威指南,这本书的中英文PDF版本提供了全面了解和学习这个搜索引擎库的机会。Lucene是Java开发的一款高性能、全文本搜索库,广泛应用于各种需要强大搜索功能的...

    前后端分离的使用spring Mvc、 mybatis、 luence、 spring 开发的开源知识库系统的所有后端端源码

    在IT行业中,前后端分离是一种常见的软件开发模式,它将应用程序分为两个主要部分:前端(用户界面)和后端(服务器逻辑)。这种架构允许前端和后端开发人员独立工作,提高了开发效率,并提供了更好的可维护性和扩展...

    Luence的与盘古分词的使用软件

    总之,“Luence的与盘古分词的使用软件”是将Lucene.NET和盘古分词相结合,利用C# .NET技术在VS2013环境下构建的一款文本处理应用。它实现了对用户输入句子的分词,以及基于分词结果的索引查询,从而在大量文本数据...

    Luence+Ikanalyzer+stopword+dic

    在搜索引擎和信息检索领域,Lucene是一个非常重要的开源全文搜索引擎库。它提供了高效的文本索引和搜索功能,被广泛应用于各种信息系统的后台。在Lucene中,为了提高搜索的准确性和效率,通常会使用到一些优化技术,...

    基于Lucene的搜索系统-客户端调用

    索引是Lucene的核心,通过索引过程,将文本数据转化为便于快速搜索的结构。查询则是用户输入的搜索条件,经过解析后转换为索引结构的查询操作。 在客户端调用阶段,用户通常通过界面输入查询请求,客户端代码需要...

    Lucene 索引图形化界面工具 LukeAll 3.5~4.0

    LukeAll 支持从 3.5.0 到 4.0.0-ALPHA 的版本,这表明它能够适应 Lucene 不同版本的索引结构,帮助开发者在不同版本间进行迁移或对比。在这些版本中,Lucene 进行了多次更新和优化,包括性能提升、新特性的添加以及...

Global site tag (gtag.js) - Google Analytics