欢迎来到天天文库
浏览记录
ID:21559295
大小:27.00 KB
页数:6页
时间:2018-10-22
《全文信息检索引擎框架系统设计与实现》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、全文信息检索引擎框架系统设计与实现 摘要:本文通过对基于java的全文信息检索引擎框架系统的研究,详细分析了信息检索、索引和搜索原理等核心技术。在此基础上本文还对系统的接口以及扩展性进行了介绍。以方便在目标系统中实现全文检索的功能,或者以此为基础建立起完整的全文检索引擎。下载论文网 关键词:信息检索;搜索引擎;索引 中图分类号:文献标识码:A文章编号:1001-828X(2011)12-0269-01 一、国内外现状及其分析 在过去的20年中,信息检索领域得到了不断的发展和壮大。现
2、在,有关信息检索的研究包括建模、文献分类和归类、系统构建、用户界面、数据可视化、信息过滤和查询语言等。虽然信息检索正在不断成熟,但是WEB的设计、定义、基本的数据模型并不能满足于人们对信息检索的需求,因此基于java的全文信息检索引擎框架系统的设计与开发的研究势在必行。 二、系统设计 1.设计思想和原则 (1)充分利用现有工作基础和成果,进行改进、提升和整合,避免重复建设。(2)模块之间关系尽量做到高内聚低耦合,通过定义一系列的接口和抽象类提高系统的可扩展性。(3)代码编写规范化,配有一定的注
3、释,保证代码的重用性、可读性,可以进行快速的二次开发。 2.接口设计 本系统外部提供了简单的建立索引和搜索的API,但是内部的机制却是非常复杂的,通过调用这些API用户可以实现为文件建立索引并进行简单搜索的功能。系统主要的建立索引的API如下所示。 (1)FileIndexer:索引操作的入口。该类的Index(File)方法递归遍历文件系统目录中的并同时调用相应的解析器索引其中所有的文件。(2)Properties:该类将文件的扩展名映射到能够解析以这些扩展名为后缀的文件的DocumentH
4、andler实现类上。(3)Analyzer:系统的文本分析器。本系统运用了其子类IK_CAnalyzer进行文本解析。 3.索引结构设计 本系统中最基础的概念是索引(index)、文档(document)、域(field)和项(term),索引包含了一个文档的序列。 (1)文档是一些域的序列。(2)域是一些项的序列。(3)项就是一个字串。 域的文本可能以逐字的非倒排的方式存储在索引中。而倒排过的域称为被索引过了。域也可能同时被存储和被索引。域的文本可能被分解许多项目而被索引,或者被用作一个
5、项目进行索引。 FileIndexer类的Index(Filefile)方法递归遍历文件系统目录并同时调用相应的解析器索引其中所有的文件。 4.部分程序设计代码 本框架系统并不关心数据的来源,格式,甚至文件使用什么自然语言都没有关系,只要可以把它转换成文本格式。目前系统只能索引和搜索MSWord、PDF、纯文本文件、HTML格式的文件,随着框架的进一步丰富,将会有更多格式的文件可以被本系统索引。具体的建立索引和搜索的过程如下所示。 publicstaticvoidmain(String[]a
6、rgs)throwsException{ if(!=3) { (“USAGE:java”+() +”-propertiesFile”+”-fileToBeIndexed”+”-indexFileSaved”); (0); } Propertiesprop=newProperties(); (new FileInputStream(args[0])); (2048); longstart=(); (file); (); longend=(); (end-start);
7、} 上述建立索引和搜索过程应用的是FileIndexer框架,这个框架存在一个很明显的缺陷:它基于文件扩展名是正确的前提之上,并且要求所有的文件都必须带有扩展名。 本文件的文件扩展名总是.txt,而不会是其他的扩张名;有假设MSWord文档文件扩展名一定为.doc等等。本系统包含了能处理如下类型输入文件的几个解析器: (1)HTML、HTM;(2)PDF;(3)MSWord;(4)纯文本文件.txt。 所以如果遇到了现有的框架不能处理的文件类型,而你又需要对此类型的文件进行索引从而使之可以被
8、搜索时,这时该去扩展这个框架。为了更准确地进行框架的扩展操作,请遵循以下的几个步骤: (1)编写一个用于解析目标文件类型的解析器,并实现DocumentHandler接口。(2)在文件中添加你的解析器类,将此类映射到对应的文件扩展名上。(3)用上例的所示的方法运行FileIndexer程序。 三、系统测试 软件测试是一项非常重要的工作。它在软件的整个生存期中占据重要的位置,对软件的运行具有极其重要的意义。 (1)测试用例一: 索引文件:Lucene:基于Ja
此文档下载收益归作者所有