基于Lucene和Heritrix的全文检索引擎的研究与应用

时间:2022-02-19 10:23:20

基于Lucene和Heritrix的全文检索引擎的研究与应用

摘要:Lucene是一个用Java写的全文索引引擎工具包,访问索引时间快,支持多用户访问,可以跨平台使用。Heritrix是一个开源的由Java开发的Web网络爬虫框架,用户可以使用它从网络上抓取想要搜索的资源。该文分析了Lucene的索引机制,探讨了Heritrix的结构框架,最后结合实例对基于Lucene和Heritrix技术的全文检索的应用进行深入研究。

关键词:Lucene;全文检索引擎;Heritrix

中图分类号:TP393.07文献标识码:A文章编号:1009-3044(2012)13-2962-03

Research and Application of Full-Text Searching Engine Based on Lucene and Heritrix

QING Xiu-hua

(School of Electronic & Electrical Engineering, Wuhan Textile University, Wuhan 430073, China)

Abstract: Lucene is a full text indexing engine package written in Java language. It has high access speed, supports multi-user accesses and can be used in a cross platform way. Heritrix is an open source web spider explored by Java. Users can snatch information from Internet by using it. The searching mechanisms of Lucene were analysis and the frameworks of Heritrix were discussed in this paper. And finally, we developed an application to make a deep study to realize the full text searching based on Lucene.

Key words: Lucene; full text searching engine; Heritrix

1概述

随着Internet网上的信息呈几何级数式的增长,搜索引擎已经成为用户浏览网络信息的首选。传统的通用搜索引擎(Google、Yahoo以及国内的Baidu等),作为一个辅助用户查找信息的工具已经成为大多数互联网用户访问网络的入口。但是,这些通用性搜索引擎存在着一定的不足,例如:通用搜索引擎的信息量较大、搜索深度不够、查询不太准确等问题。在这种情况下,为了解决这些问题,垂直搜索引擎应运而生。垂直搜索引擎是针对某一领域或行业的专业搜索引擎,是搜索引擎的延伸,可以为搜索用户提供符合专业用户操作行为的信息服务方式。它的特点是“专、精、深”,并且具有较强的行业色彩,和通用搜索引擎的海量信息无序化相比,垂直搜索引擎更加具体和深入。该文主要阐述开源的Lucene技术和Heritrix技术的基本原理和使用方法,提出了整合Lucene与Heritrix使其与J2EE平全融合的方案,并实现了一个手机产品垂直搜索引擎系统。

2全文检索引擎开源框架

2.1全文搜索工具包Lucene

Lucene是一个用Java编写的高效率、可扩展的全文索引的引擎工具包。它是目前最受欢迎的开源信息检索包。Lucene定义了平台无关的索引文件结构,保证了平台无关性。它的另外一个优秀之处在于设计结构十分优良,将所有的核心类库设计成抽象基类,用户使用Lucene时再具体实现其对应的抽象类。此外,Lucene使用类进行包装,然后进行基于面向对象的多层封装,最后形成一个低耦合、与平台无关的、可以进行二次开发的开源框架。要想使用Lucene来进行我们的开发,首先需要对Lucene的内部结构有比较清楚的了解。Lucene的结构图如图1所示。

目前已经有较多的应用程序(例如Eclipse的帮助系统的搜索功能)的搜索功能是基于Lucene的,Lucene可以为文本类型的数据建立索引,只要把要索引的数据格式转化的文本类型的数据格式,Lucene就可以对该文档进行索引和搜索。例如如果要对一些HTML文档或PDF文档进行索引,首先就需要把这些文档转化成文本格式的,再将转化后的内容交给Lucene进行索引,然后将创建好的索引文件保存到内存或磁盘中,最后根据用户输入的查询条件在索引文件上进行所需的查询。由于Lucene不需要指定将要索引的文档的格式,所以它基本上能够适用于所有的搜索应用程序。Lucene工具包的索引机制架构如图2所示。

2.2开源web爬虫框架Heritrix

Heritrix是一个开源的由Java开发的Web网络爬虫框架,用户使用它可以从网络上抓取想要搜索的资源。Heritrix来自于开源组织www.省略,它的最出色之处在于可扩展性,开发者可以根据自己的需要,通过扩展它的各个组件来实现自己的抓取逻辑。Heritrix是一个开源的可以添加多种可交互组件的爬虫框架,各种不同的组件提供不同的功能,通过对基础框架的扩展,我们可以实现满足自己需要的定制爬虫程序。Heritrix架构示意图如图3所示。

图1 Lucene结构图

图2 Lucene索引机制架构

图3 Heritrix的架构示意图

Heritrix框架的各主要部件功能描述如下:

(1)抓取任务CrawlOrder组件:CrawlOrder是整个抓取任务的开始,在一次抓取过程中包含很多的属性,最简单的一种就是根据默认的配置文件order.xml来配置。Heritrix提供了XMLSettingsHandler类,它可以用来帮助读取order.xml。

(2)中央控制器CrawlController:CrawlController是Heritrix的核心组件,它控制决定着一个抓取任务的开始和结束。

(3) Frontier链接制造工厂:Frontier的主要功能是为线程提供URL链接的处理工厂,按照一定的复杂算法将网页中的URL进行处理,将需要处理的URL链接送入到处理器链中,同时还提供一定的日志和状态报告功能。Heritrix本身已经提供了非常强大的链接处理功能,该文中就不再对其进行扩展处理。

(4) Heritrix的多线程ToeThread和ToePool:Java语言对于多线程提供了良好的支持,heritrix是基于java语言开发的爬虫框架,自然对多线程的处理也提出了独特的方案。它提供了用于管理所有的抓取线程的一个标准的线程池ToePool,线程池本身在创建的时候并没有创建实例对象,只有在调用其Set()方法时才会根据传入参数的不同创建实例,管理线程池中线程数量的增减。To? eThread线程是为更有效更快速的抓取网页内容而设计的,因为爬虫抓取,分类,处理是一个异步的过程,只有使用多线程才能让多个处理部分同时工作,提高效率。

3系统设计及实现

3.1系统架构设计

为了阐述基于Java的开源框架Lucene和Heritrix在全文搜索系统中的应用,该文实现了一个简单的手机产品的搜索引擎系统。用户通过本系统在网站上搜索他们所需要的手机的详细信息,并可以从搜索结果中打开一个页面进行浏览,了解手机的详细信息。在我们这个应用中,首先需要通过网络爬虫Heritrix将这些手机信息抓取下来,进行组织和整理,构建手机产品数据库,同时为手机的各种内容(如手机图片、手机详细资料等),利用Lucene来建立索引,以便提供给用户来进行查找。Web用户接口主要通过Spring,Struts等流行web框架来设计。完整的手机搜索系统的整体结构框架如图4所示。

图4搜索引擎系统架构图

3.2系统实现

系统的设计步骤如下:

首先需要对目标页面的结构进行分析,获取爬虫程序的资源抓取清单,爬虫程序对页面抓取完毕后,使用HTMLParser等超文本分析工具对抓取的网页进行解析,获取手机名称,型号,属性信息,图片地址等内容,利用这些内容生成手机信息文件,并对所有手机产品构建出一个关于手机产品信息的词库,这个词库包含了被抓取的所有手机的型号与品牌,用户输入关键词时就能够搜索到这些信息。产品信息词库建立好后,再将这些信息插入到数据库中,建立Lucene的索引。系统运行效果如图5所示。

图5系统运行效果图(下转第2993页)

4总结

垂直搜索引擎技术越来越受到众多开发者的重视,用户通过它可以获得更有效准确的信息检索服务。该文分析了Lucene的索引机制,探讨了Heritrix的结构框架,最后设计开发了一个简单的手机产品的搜索引擎系统,利用Lucene和Heritrix,在应用程序添加高效的索引和搜索能力成为可能。随着当前互联网和实际应用中大量数据的出现,用户更加需要从这些海量数据中提取出有用的信息,搜索引擎将变得越来越重要,基于Lucene和Heritrix的全文搜索系统将得到更加广泛的应用。

参考文献:

[1] Otis Gospodnetic, Erik Hatcher. Lucene in Action (中文版) [M].北京:电子工业出版社, 2007.

[2] Apache Lucene Project [EB/OL]. jakarta.省略/lucene/.2009.

[3] Apache Software Foundation. Lucene Query Syntax[EB/OL]. lucene.省略/java /docs/.2009.

[4]卢亮.搜索引擎原理、实践与应用[M].北京:电子工业出版社, 2007.

[5] Baeza Yates R, Ribeiro Neto B. Modern Information Retrieval [M].北京:机械工业出版社,2004.

[6]刘汉兴,刘财兴.主题爬虫的搜索策略研究[J].计算机工程与设计,2008(29).

上一篇:关于校园一卡通的网络安全优化设计 下一篇:搭建基于H3C的网络设备监控系统