Package:
Org.apache.lucene.index 这个包提供了一些类来协助创建索引以及对创建好的索引进行更新。这里面有两个基础的类:IndexWriter和IndexReader,其中IndexWriter是用来创建索引并添加文档到索引中的,IndexReader是用来删除索引中的文档的
Package:
Org.apache.lucene.search 这个包提供了对在建立好的索引上进行搜索所需要的类。比如IndexSearcher和Hits,IndexSearcher定义了在指定的索引上进行的搜索的方法,Hits用来保存搜索得到的结果。
Package:
Org.apache.lucene.util 这个包提供了一些常用的帮助类
表1.3.1 Lucene主要工具包的功能
上表是lucene搜索引擎工具包中各个包的功能,通过上图我们可以看到lucene已经将大部分的底层工作进行了封装。
2 系统设计
2.1 总体框架设计
通过上面对当前现有的桌面搜索工具的分析,显示出了桌面搜索引擎是预先建立好索引,待用户查询的时候,根据索引才能够快速的对本地文件进行查找与定位。这样框架的设计主要围绕索引的建立以及文件的查询。因此系统应分为四个模块:文件解析模块、分词索引模块、查询模块以及用户界面模块。
其中文件解析模块主要实现对相应能提取出文本内容的文件的解析工作,本软件主要实现了普通用户需求最大的Txt文件、Doc(Docx)文件、Ppt(Pptx)文件、Xls(Xlsx)文件、Pdf文件以及Rtf文件的解析工作。
分词索引模块主要实现了对上游文件解析模块解析出来的文件内容以及其他文件的信息进行相应的切词以及建立索引的过程,这里面索引的建立不需要数据库的支持,本身存储一个索引文件放到C盘下面的index文件夹中。该模块还整合了对硬盘的扫描部分,实现了对全盘的扫描。
查询模块主要对用户的索引请求进行分析,创建不同的查询处理器,根据上游建立的索引文件,对用户的请求做出回应给出结果集。
用户界面模块相当于是一个整合的工厂,对上述底层的逻辑进行调度,完成一个具有整体完整功能的软件。
2.2 业务流程分析
桌面搜索引擎的工作流程:用户根据自己的需求选择建立索引,如果是第一次使用该桌面搜索引擎或者是本地存储文件有所改动都需要重新建立索引,以保证搜索引擎结果的正确性。用户在根据自己的需求提交查询请求之后,系统根据用户的查询请求给出查询结果,查询结果通过用户界面展示给用户,用户可以通过点击查询结果直接运行文件。
图2.2.1 软件业务流程分析图
2.3 模块结构图
图2.3.1 程序基础模块结构图
从上图中看到该程序的结构是:首先startdts包启动程序,调用com.dts.usrinterface的用户界面,该用户界面同三部分进行交互,建立索引时候调用com.dts.hardwarescan包中的文件,文件会扫描硬盘,以被索引文件作为输入,最后输出索引文件。在创建索引过程中与com.dts.logic.filereader交互,返回解析的文本内容。用户界面通过调用com.dts.logic.query交互,获得结果集并展示出来,其中展示过程可以通过调用com.dts.filehandle通过默认的打开方式打开或者运行文件。
3 子模块分析设计
3.1 文件解析模块
3.1.1 主要功能简介
文件解析模块主要负责的是对一些可以解析出文字内容的文本文件进行分析,提取出其中的文字内容,这其中主要包括普通用户需求较大的Txt文件的解析、Doc(Docx)文件、Ppt(Pptx)文件、Xls(Xlsx)文件、Pdf文件以及Rtf文件等的解析工作。 Lucene桌面搜索引擎的设计与实现(4):http://www.youerw.com/jisuanji/lunwen_7560.html