APP下载

基于Lucene的期刊全文检索平台设计与研究

2014-07-16刘静

电脑知识与技术 2014年14期
关键词:全文检索文档检索

刘静

摘要:在对Lcuene技术的深入分析的基础上,设计和实现了基于Lucene的期刊全文检索平台。主要包括系统设计思路,开发平台,数据库的建设,算法,索引器、检索器和检索平台的实现。

关键词:期刊全文检索;Lucene

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)14-3334-04

1 期刊全文检索的设计思路

1.1 Lucene对期刊全文检索的支持

期刊的特点:1)期刊语种繁多,有英文、中文、德文等。2)期刊格式较多,以pdf、html为主。Lucene对于数据源没有规定固定的格式,只提供了一个通过的Document文档对象来获取索引,因此可将数据库、WORD、PDF等格式文档作为数据源,在Lucene内部为不同格式数据源提供了解析转换器,将源数据构造为文档对象以便进行索引。在Java Lucene框架中对于由不同语言编写的文档,提供了抽象的语言分析器接口,方便开发者自行定制和扩展,框架本身提供了2个较通用的SimpleAnalyser和StandardAnalyser接口[1]。对于中文分词当前使用较多的是IKAnalyse分词器、庖丁解牛分词器等。

1.2 系统的结构设计

系统在处理文献查询时,主要分为以下三步,分别为:

1)系统首先搜索文献所在目录,遍历文件并判断文件后缀是否为PDF和HTML,若符合要求则加载文件并解析,提取出文件中文本信息,创建文档Document对象,添加为索引文件。

2)获取用户的查询关键词,创建查询Query对象,在第1)步生的索引文件中匹配查找,结果按相关度进行排序,并返回一个查询结果文档集合。

3)根据第2)步查询文档集合,在文献题录库中查询对应的文献信息,在用户界面上进行展示,对查询关键词进行高亮显示。系统结构如图1所示。

系统功能模块包括:

1)期刊检索平台模块,负责把用户的检索词传给检索器,并对查询结果进行处理,从期刊题录库中提取显示信息。

2)索引器模块,负责对本地的期刊全文进行索引,生成索引文件。

3)检索器模块,负责根据用户的查询词对期刊索引进行搜索,并把结果文档的id集合返回。

4)期刊题录库模块,负责本地期刊的信息的描述。

2 期刊全文检索的实现

期刊全文检查平台的实现主要包括对期刊数据库的搭建和查询检索平台开发两部分。前者是文献检查的基础,数据库的建设与数据的完善能够提高检索的准确率;后者则能够向用户提供全文检索功能,提高检索效率。

系统开发平台选用成熟的企业级开发技术—JavaEE技术,结合成熟的Lucene3.0框架和IKAnalyser3.0中方分词器,数据库采用SQLServer2005。此开发框架具有成熟、稳定、开发快捷、便于维护和扩展等特性,可方便部署在Windows、Linux等多个平台,为期刊全文检索系统的开发提供了坚实的技术基础。

2.1 期刊数据库的建设

当前数据库的发展主要以关系型数据库为主,期刊数据库同样选择关系型存储,数据库中主要包括期刊、论文等数据表和全文数据两部分。期刊信息包括了期刊中英文名称、期刊介绍、所属学科、出版者、ISBN、网址、期数等信息。论文信息则为文献的记录,分别以文献文章信息article表、关键词信息keyword表和作者信息author表方式存储,分别保存了文献的题名、关键词、作者、摘要、出版情况、存储格式等信息,三表间互为主外键关系。全文数据采用文件方式进行存储,并且文件在格式上保留上原有格式,如HTML格式、PDF格式等。相关表设计如表1至表5所示。

2.2 索引器的实现

Lucene的索引过程包括三个阶段:将数据转化为文本、分析文本、将分析过的文本保存到索引库中。使用Lucene索引期刊过程如如图2所示。

如图2可知,实现索引器中主要任务是创建索引文档。系统在实现时设计了文档Documents基类,用于构建Lucene中的索引文档,不同格式文件需重写Documents中的GetContent方法,即解析不同文件,使之成为纯文本。

系统中设计基类主要是应用了面向对象思想中代码复用的核心思想,在父类中可封装一些通用的操作,同时子类可覆盖父类的实现,以便进行功能的扩充等。

生成索引流程图如图3所示。

2.3 检索器和检索平台的实现

检索器的功能是在被索引文件中进行查找,然后返回匹配文档的ID,通常这些ID保存在内存中,以提高检索速度。检查平台是与用户交互的UI部分,主要功能是获取用户输入的关键词,并将结果以分页的形式展示和对查询结果中的关键词进行高高显示。检索过程如图4所示。

从图中可以看出Lucene实现搜索需处理用户输入的关键词,构造一个Query实例,并根据Query类型查询索引文件。

1)搜索器的实现

为了提高检索的效率,本系统对查询结果相关度的排序做了设定,系统中设置多个查询表达式,并为每个表达式设置权值,以便让包括较多检索词的文献排在查询结果的前方。如设检查词为n个,系统自动创建2n-1个查询表达式,查询表达式的权值则依次设置为[2n-1,1]依次递减,最后在计算查询结果时将查询表达式进行组合运算。

2)检索平台的实现

系统选用企业级JavaEE技术进行开发,JavaEE技术提供了包括JSP/Servlet、EJB、JPA等技术,且在JavaEE领域存在多种开源的框架技术,方便开发者进行扩充和定制,使用JavaEE开发的系统具有跨平台、方便移植等特点。系统在技术选型上进行了大量论证,最终采用当前业界使用最为广泛的轻量级JavaEE开发框架—Spring框架和MyBatis框架两者结合。

Spring框架[3]是一种依赖注入IoC思想实现框架,其提供了在运行时动态管理对象间依赖关系的思想,将对象间的依赖关系进行反转,开发者在编程时不需将依赖关系硬编码至源码中,而是通过在配置文件中进行声明,大大提高了系统的可扩展性和可维护性。同时Spring中还包括了SpringMVC框架,以简化表示层代码开发,从Spring3.0以后开发者可选用基于注解的方式进行开发,提高了开发效率,方便开发Restful应用。MyBatis框架用于开发系统数据访问层,其核心思想是ORM(对象关系映射),依据此思想开发者在编写数据访问代码时完全按照面向对象思想进行开发,以对象为单位操作数据表中数据。在用户UI界面层,系统采用AJAX方式,选用EasyUI作为AJAX Js库,用户在使用时页面不需跳转刷新即可从服务端获取数据,提高了用户体验。

参考文献:

[1] 王学松.Lucene+nutch搜索引擎开发[M].北京:人民邮电出版社,2008.

[2] 吴众欣,沈家立.Lucene分析与应用[M].北京:机械工业出版社,2008.

[3] 陈雄华,林开雄.Spring3.x企业应用开发实战[M].北京:电子工业出版社,2012.endprint

摘要:在对Lcuene技术的深入分析的基础上,设计和实现了基于Lucene的期刊全文检索平台。主要包括系统设计思路,开发平台,数据库的建设,算法,索引器、检索器和检索平台的实现。

关键词:期刊全文检索;Lucene

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)14-3334-04

1 期刊全文检索的设计思路

1.1 Lucene对期刊全文检索的支持

期刊的特点:1)期刊语种繁多,有英文、中文、德文等。2)期刊格式较多,以pdf、html为主。Lucene对于数据源没有规定固定的格式,只提供了一个通过的Document文档对象来获取索引,因此可将数据库、WORD、PDF等格式文档作为数据源,在Lucene内部为不同格式数据源提供了解析转换器,将源数据构造为文档对象以便进行索引。在Java Lucene框架中对于由不同语言编写的文档,提供了抽象的语言分析器接口,方便开发者自行定制和扩展,框架本身提供了2个较通用的SimpleAnalyser和StandardAnalyser接口[1]。对于中文分词当前使用较多的是IKAnalyse分词器、庖丁解牛分词器等。

1.2 系统的结构设计

系统在处理文献查询时,主要分为以下三步,分别为:

1)系统首先搜索文献所在目录,遍历文件并判断文件后缀是否为PDF和HTML,若符合要求则加载文件并解析,提取出文件中文本信息,创建文档Document对象,添加为索引文件。

2)获取用户的查询关键词,创建查询Query对象,在第1)步生的索引文件中匹配查找,结果按相关度进行排序,并返回一个查询结果文档集合。

3)根据第2)步查询文档集合,在文献题录库中查询对应的文献信息,在用户界面上进行展示,对查询关键词进行高亮显示。系统结构如图1所示。

系统功能模块包括:

1)期刊检索平台模块,负责把用户的检索词传给检索器,并对查询结果进行处理,从期刊题录库中提取显示信息。

2)索引器模块,负责对本地的期刊全文进行索引,生成索引文件。

3)检索器模块,负责根据用户的查询词对期刊索引进行搜索,并把结果文档的id集合返回。

4)期刊题录库模块,负责本地期刊的信息的描述。

2 期刊全文检索的实现

期刊全文检查平台的实现主要包括对期刊数据库的搭建和查询检索平台开发两部分。前者是文献检查的基础,数据库的建设与数据的完善能够提高检索的准确率;后者则能够向用户提供全文检索功能,提高检索效率。

系统开发平台选用成熟的企业级开发技术—JavaEE技术,结合成熟的Lucene3.0框架和IKAnalyser3.0中方分词器,数据库采用SQLServer2005。此开发框架具有成熟、稳定、开发快捷、便于维护和扩展等特性,可方便部署在Windows、Linux等多个平台,为期刊全文检索系统的开发提供了坚实的技术基础。

2.1 期刊数据库的建设

当前数据库的发展主要以关系型数据库为主,期刊数据库同样选择关系型存储,数据库中主要包括期刊、论文等数据表和全文数据两部分。期刊信息包括了期刊中英文名称、期刊介绍、所属学科、出版者、ISBN、网址、期数等信息。论文信息则为文献的记录,分别以文献文章信息article表、关键词信息keyword表和作者信息author表方式存储,分别保存了文献的题名、关键词、作者、摘要、出版情况、存储格式等信息,三表间互为主外键关系。全文数据采用文件方式进行存储,并且文件在格式上保留上原有格式,如HTML格式、PDF格式等。相关表设计如表1至表5所示。

2.2 索引器的实现

Lucene的索引过程包括三个阶段:将数据转化为文本、分析文本、将分析过的文本保存到索引库中。使用Lucene索引期刊过程如如图2所示。

如图2可知,实现索引器中主要任务是创建索引文档。系统在实现时设计了文档Documents基类,用于构建Lucene中的索引文档,不同格式文件需重写Documents中的GetContent方法,即解析不同文件,使之成为纯文本。

系统中设计基类主要是应用了面向对象思想中代码复用的核心思想,在父类中可封装一些通用的操作,同时子类可覆盖父类的实现,以便进行功能的扩充等。

生成索引流程图如图3所示。

2.3 检索器和检索平台的实现

检索器的功能是在被索引文件中进行查找,然后返回匹配文档的ID,通常这些ID保存在内存中,以提高检索速度。检查平台是与用户交互的UI部分,主要功能是获取用户输入的关键词,并将结果以分页的形式展示和对查询结果中的关键词进行高高显示。检索过程如图4所示。

从图中可以看出Lucene实现搜索需处理用户输入的关键词,构造一个Query实例,并根据Query类型查询索引文件。

1)搜索器的实现

为了提高检索的效率,本系统对查询结果相关度的排序做了设定,系统中设置多个查询表达式,并为每个表达式设置权值,以便让包括较多检索词的文献排在查询结果的前方。如设检查词为n个,系统自动创建2n-1个查询表达式,查询表达式的权值则依次设置为[2n-1,1]依次递减,最后在计算查询结果时将查询表达式进行组合运算。

2)检索平台的实现

系统选用企业级JavaEE技术进行开发,JavaEE技术提供了包括JSP/Servlet、EJB、JPA等技术,且在JavaEE领域存在多种开源的框架技术,方便开发者进行扩充和定制,使用JavaEE开发的系统具有跨平台、方便移植等特点。系统在技术选型上进行了大量论证,最终采用当前业界使用最为广泛的轻量级JavaEE开发框架—Spring框架和MyBatis框架两者结合。

Spring框架[3]是一种依赖注入IoC思想实现框架,其提供了在运行时动态管理对象间依赖关系的思想,将对象间的依赖关系进行反转,开发者在编程时不需将依赖关系硬编码至源码中,而是通过在配置文件中进行声明,大大提高了系统的可扩展性和可维护性。同时Spring中还包括了SpringMVC框架,以简化表示层代码开发,从Spring3.0以后开发者可选用基于注解的方式进行开发,提高了开发效率,方便开发Restful应用。MyBatis框架用于开发系统数据访问层,其核心思想是ORM(对象关系映射),依据此思想开发者在编写数据访问代码时完全按照面向对象思想进行开发,以对象为单位操作数据表中数据。在用户UI界面层,系统采用AJAX方式,选用EasyUI作为AJAX Js库,用户在使用时页面不需跳转刷新即可从服务端获取数据,提高了用户体验。

参考文献:

[1] 王学松.Lucene+nutch搜索引擎开发[M].北京:人民邮电出版社,2008.

[2] 吴众欣,沈家立.Lucene分析与应用[M].北京:机械工业出版社,2008.

[3] 陈雄华,林开雄.Spring3.x企业应用开发实战[M].北京:电子工业出版社,2012.endprint

摘要:在对Lcuene技术的深入分析的基础上,设计和实现了基于Lucene的期刊全文检索平台。主要包括系统设计思路,开发平台,数据库的建设,算法,索引器、检索器和检索平台的实现。

关键词:期刊全文检索;Lucene

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)14-3334-04

1 期刊全文检索的设计思路

1.1 Lucene对期刊全文检索的支持

期刊的特点:1)期刊语种繁多,有英文、中文、德文等。2)期刊格式较多,以pdf、html为主。Lucene对于数据源没有规定固定的格式,只提供了一个通过的Document文档对象来获取索引,因此可将数据库、WORD、PDF等格式文档作为数据源,在Lucene内部为不同格式数据源提供了解析转换器,将源数据构造为文档对象以便进行索引。在Java Lucene框架中对于由不同语言编写的文档,提供了抽象的语言分析器接口,方便开发者自行定制和扩展,框架本身提供了2个较通用的SimpleAnalyser和StandardAnalyser接口[1]。对于中文分词当前使用较多的是IKAnalyse分词器、庖丁解牛分词器等。

1.2 系统的结构设计

系统在处理文献查询时,主要分为以下三步,分别为:

1)系统首先搜索文献所在目录,遍历文件并判断文件后缀是否为PDF和HTML,若符合要求则加载文件并解析,提取出文件中文本信息,创建文档Document对象,添加为索引文件。

2)获取用户的查询关键词,创建查询Query对象,在第1)步生的索引文件中匹配查找,结果按相关度进行排序,并返回一个查询结果文档集合。

3)根据第2)步查询文档集合,在文献题录库中查询对应的文献信息,在用户界面上进行展示,对查询关键词进行高亮显示。系统结构如图1所示。

系统功能模块包括:

1)期刊检索平台模块,负责把用户的检索词传给检索器,并对查询结果进行处理,从期刊题录库中提取显示信息。

2)索引器模块,负责对本地的期刊全文进行索引,生成索引文件。

3)检索器模块,负责根据用户的查询词对期刊索引进行搜索,并把结果文档的id集合返回。

4)期刊题录库模块,负责本地期刊的信息的描述。

2 期刊全文检索的实现

期刊全文检查平台的实现主要包括对期刊数据库的搭建和查询检索平台开发两部分。前者是文献检查的基础,数据库的建设与数据的完善能够提高检索的准确率;后者则能够向用户提供全文检索功能,提高检索效率。

系统开发平台选用成熟的企业级开发技术—JavaEE技术,结合成熟的Lucene3.0框架和IKAnalyser3.0中方分词器,数据库采用SQLServer2005。此开发框架具有成熟、稳定、开发快捷、便于维护和扩展等特性,可方便部署在Windows、Linux等多个平台,为期刊全文检索系统的开发提供了坚实的技术基础。

2.1 期刊数据库的建设

当前数据库的发展主要以关系型数据库为主,期刊数据库同样选择关系型存储,数据库中主要包括期刊、论文等数据表和全文数据两部分。期刊信息包括了期刊中英文名称、期刊介绍、所属学科、出版者、ISBN、网址、期数等信息。论文信息则为文献的记录,分别以文献文章信息article表、关键词信息keyword表和作者信息author表方式存储,分别保存了文献的题名、关键词、作者、摘要、出版情况、存储格式等信息,三表间互为主外键关系。全文数据采用文件方式进行存储,并且文件在格式上保留上原有格式,如HTML格式、PDF格式等。相关表设计如表1至表5所示。

2.2 索引器的实现

Lucene的索引过程包括三个阶段:将数据转化为文本、分析文本、将分析过的文本保存到索引库中。使用Lucene索引期刊过程如如图2所示。

如图2可知,实现索引器中主要任务是创建索引文档。系统在实现时设计了文档Documents基类,用于构建Lucene中的索引文档,不同格式文件需重写Documents中的GetContent方法,即解析不同文件,使之成为纯文本。

系统中设计基类主要是应用了面向对象思想中代码复用的核心思想,在父类中可封装一些通用的操作,同时子类可覆盖父类的实现,以便进行功能的扩充等。

生成索引流程图如图3所示。

2.3 检索器和检索平台的实现

检索器的功能是在被索引文件中进行查找,然后返回匹配文档的ID,通常这些ID保存在内存中,以提高检索速度。检查平台是与用户交互的UI部分,主要功能是获取用户输入的关键词,并将结果以分页的形式展示和对查询结果中的关键词进行高高显示。检索过程如图4所示。

从图中可以看出Lucene实现搜索需处理用户输入的关键词,构造一个Query实例,并根据Query类型查询索引文件。

1)搜索器的实现

为了提高检索的效率,本系统对查询结果相关度的排序做了设定,系统中设置多个查询表达式,并为每个表达式设置权值,以便让包括较多检索词的文献排在查询结果的前方。如设检查词为n个,系统自动创建2n-1个查询表达式,查询表达式的权值则依次设置为[2n-1,1]依次递减,最后在计算查询结果时将查询表达式进行组合运算。

2)检索平台的实现

系统选用企业级JavaEE技术进行开发,JavaEE技术提供了包括JSP/Servlet、EJB、JPA等技术,且在JavaEE领域存在多种开源的框架技术,方便开发者进行扩充和定制,使用JavaEE开发的系统具有跨平台、方便移植等特点。系统在技术选型上进行了大量论证,最终采用当前业界使用最为广泛的轻量级JavaEE开发框架—Spring框架和MyBatis框架两者结合。

Spring框架[3]是一种依赖注入IoC思想实现框架,其提供了在运行时动态管理对象间依赖关系的思想,将对象间的依赖关系进行反转,开发者在编程时不需将依赖关系硬编码至源码中,而是通过在配置文件中进行声明,大大提高了系统的可扩展性和可维护性。同时Spring中还包括了SpringMVC框架,以简化表示层代码开发,从Spring3.0以后开发者可选用基于注解的方式进行开发,提高了开发效率,方便开发Restful应用。MyBatis框架用于开发系统数据访问层,其核心思想是ORM(对象关系映射),依据此思想开发者在编写数据访问代码时完全按照面向对象思想进行开发,以对象为单位操作数据表中数据。在用户UI界面层,系统采用AJAX方式,选用EasyUI作为AJAX Js库,用户在使用时页面不需跳转刷新即可从服务端获取数据,提高了用户体验。

参考文献:

[1] 王学松.Lucene+nutch搜索引擎开发[M].北京:人民邮电出版社,2008.

[2] 吴众欣,沈家立.Lucene分析与应用[M].北京:机械工业出版社,2008.

[3] 陈雄华,林开雄.Spring3.x企业应用开发实战[M].北京:电子工业出版社,2012.endprint

猜你喜欢

全文检索文档检索
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
2019年第4-6期便捷检索目录
基于RI码计算的Word复制文档鉴别
Oracle数据库全文检索性能研究
专利检索中“语义”的表现
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
基于KySou的全文检索系统的分析与优化
国际标准检索
国际标准检索