全文检索及其在公文处理系统中的应用

更新时间:2023-09-06 19:42:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

论文示例

HUNAN UNIVERSITY

毕业设计(论文)

设计论文题目: 全文检索及其在公文

处理系统中的应用

赵湘舰

20041610334

软件开发2班

软件学院

陆绍飞

林亚平 学生姓名: 学生学号: 专业班级: 学院名称: 指导老师: 学院院长:

2008 年 5 月 23 日

论文示例

全文检索及其在公文处理系统中的应用

摘 要

随着信息技术的发展,人们对信息查询效率的要求越来越高。全文检索的发展和应用满足了大部分的需求。

LUCEN是一个开放源代码的全文检索引擎,并提供了完整的查询引擎和索引引擎,其目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。

本课题实际需求来源于本人在企业里实习时参与开发的公文处理系统,此系统要求具有站内搜索引擎的功能,能够对公文内容进行检索。项目中的搜索引擎采用LUCENE实现,使得公文处理系统在内容检索郊率得到极大提高,站内搜索使整个系统的功能更加强大,为用户提供了更为便利的搜索功能。

本文对搜索引擎的原理、组成、数据结构、工作流程等方面做了深入而细致地研究与分析。并且通过LUCENE来设计和实现一个全文检索站内搜索引擎系统,最后通过增量索引和优化索引两个方面来说明如何提高LUCENE的高效性。

关键词: 全文检索,搜索引擎,LUCENE

论文示例

Full-Text Search and Its Implementation in Document Processing

System

Author: Xiangjian Zhao

Tutor: Shaofei Lu

With the development of the information technology, the demand on the efficiency of searching information has been getting higher and higher. And the development and application of full-text retrieval satisfy most of people.

LUCENE is a tool kit of full-text search engine of open source, and it provide integral inquire engine and index engine. LUCENE is designed to provide a simple, easy-to-use tool kit for software developers,and it’s convenient to realize the full-text retrieval function in the target system , or as a basis to establish the integral full-text search engine.

The actual requirements of this system origin from my development on “Document Processing System” when I practiced in the enterprise. The system uses the function of station search engine. I use the LUCENE to realize the search engine in it. Now for stable operation, station search make the function of the whole system become more powerful, and to provide users with a more convenient search function.

I have carefully studied and analysis search engines principle, composition, data structure, and work flow, and have designed and realized a full-text retrieval stations search engine by means of LUCENE. Finally, both to I illustrate how to improve the efficiency of LUCENE through two aspects, the increment index and the optimization index.

Key Words: Full-Text Search, Search Engine, Lucene,

论文示例

目 录

1.绪论 ................................................................... 1

1.1课题背景 ....................................................................................................................... 1

1.2课题目前研究情况及存在问题 ................................................................................... 1

1.3论文组织结构 ............................................................................................................... 2

2.全文检索与LUCENE ....................................................... 3

2.1全文检索与全文检索简介 ........................................................................................... 3

2.2全文检索系统与数据库比较 ....................................................................................... 4

2.3 LUCENE简介 .............................................................................................................. 6

2.4 LUCENE的应用、特点及优势 .................................................................................. 7

2.5互联网搜索引擎的研究 ............................................................................................... 8

2.6中文分词的简单介绍 ................................................................................................... 9

3.LUCENE系统结构 ........................................................ 11

3.1 LUCENE系统结构组织 ............................................................................................ 11

3.2 数据流分析 ................................................................................................................. 11

3.3 LUCENE索引文件格式分析 .................................................................................... 13

3.3.1 LUCENE源码实现分析的说明 ...................................................................... 13

3.3.2 LUCENE索引文件格式 .................................................................................. 13

3.4 LUCENE的倒排序原理 ............................................................................................ 16

3.5 LUCENE搜索结果排序 ............................................................................................ 18

4.系统设计与实现 ........................................................ 20

4.1系统需求 ..................................................................................................................... 20

4.2开发环境与工具 ......................................................................................................... 20

4.3系统组织结构 ............................................................................................................. 22

4.4全文检索流程的实现 ................................................................................................. 27

4.4.1生成索引 ........................................................................................................... 28

4.4.2更新索引 ........................................................................................................... 31

4.4.3 检索 .................................................................................................................. 32

5.检索结果分析 .......................................................... 35

5.1 系统中的检索结果 .................................................................................................... 35

5.2 测试总结 .................................................................................................................... 35

6.关键技术 .............................................................. 40

6.1 LUCENE增量索引 .................................................................................................... 40

6.2优化索引 ..................................................................................................................... 40

6.3 LUCENE文件格式的通用性 .................................................................................... 41

6.4对于私密文件的处理 ................................................................................................. 41

总 结 .................................................................. 42

论文示例

致 谢 .................................................................. 43

参考文献 ................................................................ 44

论文示例

1.绪论

1.1课题背景

随着现在网络信息化的迅速普及与发展,获取网络上面的有用信息成为人们使用的网络的主需要之一,所以搜索技术成为达到获取有用信息的主要技术,由此互联网搜索引擎应运而生,像Google,Baidu等公司在基于互联网络的搜索中在给人们提供方便的同时公司本身也取得了巨大的成功。但是目前的站内搜索引擎做得还不是很好,普遍存在搜索精度差,搜索时间长,扩展性不够强等缺点,能够可以供给网站免费使用和学习的站内搜索引擎就更少了,这样就造成了有些网站没有站内搜索引擎或者搜索引擎不好用的局面,这对网站本身的用户体验显然是不能令人满意的,所以站内搜索引擎成为一个网站必不可少的功能之一。

本系统的需求来源于公文处理系统,这是本人在公司实习的时候做的一个项目,其中站内搜索功能是一个必不可少的功能之一,这个系统非常需要这样一个站内搜索的功能,能够搜索指定的公文文档的内容,所以为公文处理系统建立一个站内搜索功能成为了一个现实存在的需求,于是设计和开发出一个通用的站内搜索引擎是一个非常具有现实意义的研究。

1.2课题目前研究情况及存在问题

目前有一些成熟的搜索引擎可以使用,但是都是用于商业,一般不公开源代码,学习起来比较困难,所以一些开源的项目成为设计时的首选,经过对搜索技术的研究,在Apache上发现了一个JAVA实现的用于搜索的开源项目LUCENE,LUCENE目前是公认的最好的搜索方面的开源项目之一,现在LUCENE已经成功的被移植到C,Perl、Python、C++、.NET及Ruby版本,所以其扩展性比较好,可以适用于大多数的平台,所以是开发站内搜索引擎的最理想的技术,但是目前存在若干问题:

1、LUCENE默认是不支持中文搜索的,所以要通过扩展其API使其支持中文搜索以及实现基本的中文分词。

2、由于公司项目的具体需求,以后将会遇到多条件的搜索,以及搜索SQLSERVER数据库和联合多个目录进行的搜索问题。

3、出于系统的某些信息的保密性,要限制某些信息被搜索到,要考虑如何保护文件的私密性。

论文示例

1.3论文组织结构

第2章 介绍全文检索系统与LUCENE。

第3章 介绍LUCENE系统结构。

第4章 介绍本系统的设计与实现。

第5章 检索结果分析。

第6章 介绍系统开发过程应用到的几点关键技术。

总结部分介绍整个开发过程中的体会与认识,并指出目前系统中的不足和改进方向。 本文主要从基于LUCENE的全文检索入题,阐述了全文检索的工作原理,延续到全文检索在公文处理系统中的设计与实现,最后总结出全文检索的效率与在公文处理系统中的应用效果。

论文示例

2.全文检索与LUCENE

2.1全文检索与全文检索简介

全文检索[1]是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。

全文检索的方法主要分为按字检索和按词检索两种。按字检索是指对于文章中的每一个字都建立索引,检索时将词分解为字的组合。对于各种不同的语言而言,字有不同的含义,比如英文中字与词实际上是合一的,而中文中字与词有很大分别。按词检索指对文章中的词,即语义单位建立索引,检索时按词检索,并且可以处理同义项等。英文等西方文字由于按照空白切分词,因此实现上与按字处理类似,添加同义处理也很容易。中文等东方文字则需要切分字词,以达到按词索引的目的,关于这方面的问题,是当前全文检索技术尤其是中文全文检索技术中的难点,在此不做详述。

全文检索系统是按照全文检索理论建立起来的用于提供全文检索服务的软件系统。一般来说,全文检索需要具备建立索引和提供查询的基本功能,此外现代的全文检索系统还需要具有方便的用户接口、面向WWW的开发接口、二次应用开发接口等等。功能上,全文检索系统核心具有建立索引、处理查询返回结果集、增加索引、优化索引结构等等功能,外围则由各种不同应用具有的功能组成。结构上,全文检索系统核心具有索引引擎、查询引擎、文本分析引擎、对外接口等等,加上各种外围应用系统等等共同构成了全文检索系统。图1.1展示了上述全文检索系统的结构与功能。

在1.1图中,我们看到:全文检索系统中最为关键的部分是全文检索引擎,各种应用程序都需要建立在这个引擎之上。一个全文检索应用的优异程度,根本上由全文检索引擎来决定。因此提升全文检索引擎的效率即是我们提升全文检索应用的根本。另一个方面,一个优异的全文检索引擎,在做到效率优化的同时,还需要具有开放的体系结构,以方便程序员对整个系统进行优化改造,或者是添加原有系统没有的功能。比如在当今多语言处理的环境下,有时需要给全文检索系统添加处理某种语言或者文本格式的功能,比如在英文系统中添加中文处理功能,在纯文本系统中添加XML或者HTML格式的文本处理功能,系统的开放性和扩充性就十分的重要。

论文示例

2.2全文检索系统与数据库比较

全文检索的实现机制:LUCENE的API接口设计的比较通用,输入输出结构都很像数据库的表==>记录==>字段,所以很多传统的应用的文件、数据库等都可以比较方便的映射到LUCENE的存储结构/接口中。总体上看:可以先把LUCENE当成一个支持全文索引的数据库系统。如表2.1比较一下LUCENE和数据库:

全文检索 ≠ like "%keyword%"。

通常比较厚的书籍后面常常附关键词索引表(如:北京:12, 34页,上海:3,77页……),它能够帮助读者比较快地找到相关内容的页码。而数据库索引能够大大提高查询的速度原理也是一样,想像一下通过书后面的索引查找的速度要比一页一页地翻内容高多少倍……而索引之所以效率高,另外一个原因是它是排好序的。对于检索系统来说核心是一个排序问题。

由于数据库索引不是为全文索引设计的,因此,使用like "%keyword%"时,数据库索引是不起作用的,在使用like查询时,搜索过程又变成类似于一页页翻书的遍历过程了,所以对于含有模糊查询的数据库服务来说,LIKE对性能的危害是极大的。如果是需要对多个关键词进行模糊匹配:like"%keyword1%" and like "%keyword2%" ...其效率也

论文示例

就可想而知了。

表2.1 LUCENE和数据库结构的比较

所以建立一个高效检索系统的关键是建立一个类似于科技索引一样的反向索引机制,将数据源(比如多篇文章)排序顺序存储的同时,有另外一个排好序的关键词列表,用于存储关键词==>文章映射关系,利用这样的映射关系索引:[关键词==>出现关键词的文章编号,出现次数(甚至包括位置:起始偏移量,结束偏移量),出现频率],检索过程就是把模糊查询变成多个可以利用索引的精确查询的逻辑组合的过程。从而大大提高了多关键词查询的效率,所以,全文检索问题归结到最后是一个排序问题。

由此可以看出模糊查询相对数据库的精确查询是一个非常不确定的问题,这也是大部分数据库对全文检索支持有限的原因。LUCENE最核心的特征是通过特殊的索引结构实现了传统数据库不擅长的全文索引机制,并提供了扩展接口,以方便针对不同应用的定制。可以通过一下表2.2与表2.3对比LUCENE与数据库的模糊查询:

论文示例

全文检索和数据库应用最大的不同在于:让最相关的头100条结果满足98%以上用户的需求。

表2.2 LUCENE和数据库功能的比较

LUCENE的创新之处:

大部分的搜索(数据库)引擎都是用B树结构来维护索引,索引的更新会导致大量的IO操作,LUCENE在实现中,对此稍微有所改进:不是维护一个索引文件,而是在扩展索引的时候不断创建新的索引文件,然后定期的把这些新的小索引文件合并到原先的大索引中(针对不同的更新策略,批次的大小可以调整),这样在不影响检索的效率的前提下,提高了索引的效率。

2.3 LUCENE简介

LUCENE不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。

论文示例

LUCENE的作者: Doug Cutting是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎(Apple的Copland操作系统的成就之一)的主要开发者,后在Excite担任高级系统架构设计师,目前从事于一些INTERNET底层架构的研究。他贡献出的LUCENE的目标是为各种中小型应用程序加入全文检索功能。

LUCENE的发展历程:早先发布在作者自己的http://www.77cn.com.cn,后来发布在SourceForge,2001年年底成为APACHE基金会jakarta的一个子项目:。已经有很多Java项目都使用了LUCENE作为其后台的全文索引引擎,比较著名的有:Jive;WEB论坛系统; Eyebrows;邮件列表HTML归档/浏览/查询系统;Cocoon:基于XML的web发布框架,全文检索部分使用了LUCENE 。Eclipse:基于Java的开放开发平台,帮助部分的全文索引使用了LUCENE。

本文的主要参考文档“TheLUCENE search engine: Powerful, flexible, and free”作者就是EyeBrows系统的主要开发者之一,而EyeBrows已经成为目前APACHE项目的主要邮件列表归档系统。

对于中文用户来说,最关心的问题是其是否支持中文的全文检索。但通过后面对于LUCENE的结构的介绍,你会了解到由于LUCENE良好架构设计,对中文的支持只需对其语言词法分析接口进行扩展就能实现对中文检索的支持。

2.4 LUCENE的应用、特点及优势

作为一个开放源代码项目,LUCENE从问世之后,引发了开放源代码社群的巨大反响,程序员们不仅使用它构建具体的全文检索应用,而且将之集成到各种系统软件中去,以及构建Web应用,甚至某些商业软件也采用了LUCENE作为其内部全文检索子系统的核心。apache软件基金会的网站使用了LUCENE作为全文检索的引擎,IBM的开源软件eclipse的2.1版本中也采用了LUCENE作为帮助子系统的全文索引引擎,相应的IBM的商业软件Web Sphere中也采用了LUCENE。LUCENE以其开放源代码的特性、优异的索引结构、良好的系统架构获得了越来越多的应用。

LUCENE作为一个全文检索引擎,其具有如下突出的优点:

1、索引文件格式独立于应用平台。LUCENE定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。

论文示例

2、在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。然后通过与原有索引的合并,达到优化的目的。

3、优秀的面向对象的系统架构,使得对于LUCENE扩展的学习难度降低,方便扩充新功能。

4、设计了独立于语言和文件格式的文本分析接口,索引器通过接受Token流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。

5、已经默认实现了一套强大的查询引擎,用户无需自己编写代码即使系统可获得强

LUCENE的查询实现中默认实现了布尔操作、大的查询能力,模糊查询(Fuzzy Search)、

分组查询等等。

6 、LUCENE数据格式兼容性。即用Java LUCENE 生成的索引,能被C# 读出来,反之亦然

面对已经存在的商业全文检索引擎,LUCENE也具有相当的优势。首先,它的开发源代码发行方式(遵守Apache Software License),在此基础上程序员不仅仅可以充分的利用LUCENE所提供的强大功能,而且可以深入细致的学习到全文检索引擎制作技术和面向对象编程的实践,进而在此基础上根据应用的实际情况编写出更好的更适合当前应用的全文检索引擎。在这一点上,商业软件的灵活性远远不及LUCENE。其次,LUCENE秉承了开放源代码一贯的架构优良的优势,设计了一个合理而极具扩充能力的面向对象架构,程序员可以在LUCENE的基础上扩充各种功能,比如扩充中文处理能力,从文本扩充到HTML、PDF等等文本格式的处理,编写这些扩展的功能不仅仅不复杂,而且由于LUCENE恰当合理的对系统设备做了程序上的抽象,扩展的功能也能轻易的达到跨平台的能力。最后,转移到apache软件基金会后,借助于apache软件基金会的网络平台,程序员可以方便的和开发者、其它程序员交流,促成资源的共享,甚至直接获得已经编写完备的扩充功能。最后,虽然LUCENE使用Java语言写成,但是开放源代码社区的程序员正在不懈的将之使用各种传统语言实现(例如.net framework),在遵守LUCENE索引文件格式的基础上,使得LUCENE能够运行在各种各样的平台上,系统管理员可以根据当前的平台适合的语言来合理的选择[2]。

2.5互联网搜索引擎的研究

当今的搜索引擎大多采用集中式的搜索方式。搜索引擎结构大致分为:搜索器、索引器和检索器等几部分组成。搜索器就是人们所说的网络蜘蛛(Web Spider)或者叫网络

论文示例

机器人。通过这种Spider程序,可以从一个网页出发,通过提取其中的URL,在遵从Robot Exclusion协议的前提下,不断地提取得到的URL,并且下载本URL的资源;而索引器的主要工作则是利用下载的网络资源,提取索引项,用于生成文档库的索引表;检索器主要是通过理解用户的查询需求,在文档库中检索出文档并且进行快速匹配,然后进行相关性排序,通过链接网页提供给用户检索结果。至此,完成搜索。

这样就可以知道:只要LUCENE+”蜘蛛爬虫”+”网页相关度排名”,就可以成为一个真正意义上的搜索引擎,事实上LUCENE的创始人Doug Cutting已经开发了一个叫做”Nutch”的搜索引擎系统了,这个系统加上了“蜘蛛程序”可以对整个Internet的网页进行搜索,Nutch具体的逻辑关系图如下:

图2.1 Nutch逻辑关系图

真正的搜索引擎在搜索的时候就是和LUCENE采用一样的原理:在Index中遍历所有的Segments目录。而且一般中文分词也都是采用LUCENE的中文分词方法[8]。

2.6中文分词的简单介绍

切词[4]对于搜索结果来说是十分重要的环节,对于英文,只用关注空格即可实现切词,而对于中文,由于中文词汇非常丰富,词语的组成十分不固定,所以中文切词就变

论文示例

得比较困难。现在比较普遍的是中文单字切词、双字切词、字典切词,对于单字切词由于其一开始的不准确性就被很多人放弃,最准确的切词方法应该是字典切词,匹配方法大致有前向匹配、后向匹配和基于统计的匹配。举例来说,对于“中华人民”这句话,单字切词就是把这四个字一个作为一个词索引,搜索的时候逐字匹配,而双字索引是把这句话依次按两个字加以区分,分为“中华”,“华人”,“人民”这样切词。字典切词则是相对于词库来寻找哪个应该作为词,而哪个不是,由此也可以知道,字典切词是比较准确的,但是由于汉语词语的不断变化和扩充性,所以现在还要结合双字切词才可以更好地提高准确度。由于字典切词和双字切词的配合使用,搜索的匹配精度在很大程度上是可以得到保证的,LUCENE的切词方法,通过程序集LUCENE.Analysis来实现。

论文示例

3.LUCENE系统结构

3.1 LUCENE系统结构组织

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

以下将讨论LUCENE系统的结构组织,并给出系统结构与源码组织图如图3.1:

图3.1 系统结构与源码组织结构图

3.2 数据流分析

理解LUCENE系统结构的另一个方式是去探讨其中数据流的走向,并以此摸清楚LUCENE系统内部的调用时序。在此基础上,我们能够更加深入的理解LUCENE的系统结构组织,以方便以后在LUCENE系统上的开发工作。这部分的分析,是深入LUCENE系统的钥匙,也是进行重写的基础。

LUCENE系统中的主要的数据流以及它们之间的关系图如图3.2:

论文示例

图3.2 数据流图

图3.2很好的表明了LUCENE在内部的数据流组织情况,并且沿着数据流的方向我们也可以对与LUCENE内部的执行时序有一个清楚的了解。现在将图中的涉及到的流的类型与各个逻辑对应系统的相关部分的关系说明一下。

图中共存在4种数据流,分别是文本流、token流、字节流与查询语句对象流。文本流表示了对于索引目标和交互控制的抽象,即用文本流表示了将要索引的文件,用文本流向用户输出信息;在实际的实现中,LUCENE中的文本流采用了UCS-2作为编码,以达到适应多种语言文字的处理的目的。Token流是LUCENE内部所使用的概念,是对传统文字中的词的概念的抽象,也是LUCENE在建立索引时直接处理的最小单位;简单的讲Token就是一个词和所在域值的组合,后面在叙述文件格式时也将继续涉及到token,这里不详细展开。字节流则是对文件抽象的直接操作的体现,通过固定长度的字节(LUCENE定义为8比特位长,后面文件格式将详细叙述)流的处理,将文件操作解脱出来,也做到了与平台文件系统的无关性。查询语句对象流则是仅仅在查询语句解析时用到的概念,它对查询语句抽象,通过类的继承结构反映查询语句的结构,将之传送到查找逻辑来进行查找的操作。

论文示例

图中的涉及到了多种逻辑,基本上直接对应于系统某一模块,但是也有跨模块调用的问题发生,这是因为LUCENE的重用程度非常好,因此很多实现直接调用了以前的工作成果,这在某种程度上其实是加强了模块耦合性,但是也是为了避免系统的过于庞大和不必要的重复设计的一种折衷体现。词法分析逻辑对应于org.apache.LUCENE.analysis部分。查询语句语法分析逻辑对应于org.apache.LUCENE.queryParser部分,并且调用了org.apache.LUCENE.analysis的代码。查询结束之后向评分排序逻辑输出token流,继而由评分排序逻辑处理之后给出文本流的结果,这一部分的实现也包含在了org.apache.LUCENE.search中。索引构建逻辑对应于org.apache.LUCENE.index部分。索引查找逻辑则主要是org.apache.LUCENE.search,但是也大量的使用了org.apache.LUCENE.index部分的代码和接口定义。存储抽象对应于org.apache.LUCENE.store [5]。

3.3 LUCENE索引文件格式分析

3.3.1 LUCENE源码实现分析的说明

通过以上对LUCENE系统结构的分析,我们已经大致的清楚了LUCENE系统的组成,以及在LUCENE系统之上的开发步骤。接下来,我们试图来分析LUCENE项目(采用LUCENE 1.2版本)的源码实现,考察其实现的细节。这不仅仅是我们尝试用C++语言重新实现LUCENE的必须工作,也是进一步做LUCENE开发工作的必要准备。因此,这一部分所涉及到的内容,对于LUCENE上的应用开发也是有价值的,尤其是本部分所做的文件格式分析。

3.3.2 LUCENE索引文件格式

在LUCENE的web站点上,有关于LUCENE的文件格式的规范,其规定了LUCENE的文件格式采取的存储单位、组织结构、命名规范等等内容,但是它仅仅是一个规范说明,并没有从实现者角度来衡量这个规范的实现。因此,我们以下的内容,结合了我们自己的分析与文件格式的定义规范,以期望给出一个更加清晰的文件格式说明。

首先在LUCENE的文件格式中,以字节为基础,定义了如下的数据类型如表3.1: 以上的数据类型就是LUCENE索引文件格式中用到的全部数据类型,由于它们都以字节为基础定义而来,因此保证了是平台无关,这也是LUCENE索引文件格式平台

论文示例

无关的主要原因。接下来我们看看LUCENE索引文件的概念组成和结构组成如图3.3。

表 3.1 LUCENE文件格式中定义的数据类型

图3.3 LUCENE索引文件概念结构

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

本文来源:https://www.bwwdw.com/article/s4ch.html

Top