当前位置:文档之家› 垂直搜索引擎的研究与设计

垂直搜索引擎的研究与设计

第27卷第7期 计算机应用与软件Vol127No.7

2010年7月 ComputerApplicationsandSoftwareJul.2010

垂直搜索引擎的研究与设计刘运强(贵州大学计算机学院 贵州贵阳550025)

收稿日期:2009-10-09。贵州省科技计划工业攻关基金项目(黔科合GY字[2008]3035);贵州省2008年省级信息化专项基金项目(0830)。刘运强,硕士生,主研领域:数据库技术与软件工程。

摘 要 通过对垂直搜索引擎的原理和关键技术的研究,运用Lucene等JAVA开源工具设计并实现了一个手机信息检索系统。对于构建垂直搜索引擎必须要面对和解决的一些关键问题进行了分析,并给出了解决方案,如防止重复爬取网页和专业词库的扩展等,具有较强的实用性。

关键词 搜索引擎 垂直搜索 爬虫 Lucene

RESEARCHANDDESIGNOFVERTICALSEARCHENGINELiuYunqiang(CollegeofComputerScience,GuizhouUniversity,Guiyang550025,Guizhou,China)

Abstract ThispaperpresentsthedesignandimplementationofaninformationretrievalsystemformobilephonesbyapplyingJAVAopen-sourcetoolssuchasLuceneandthroughstudyingtheprinciplesofverticalsearchengineandcriticaltechnologies.Inaddition,theanalysesaremadeonsomekeyproblemswhichhavetoencounterandresolvewhenconstructingtheverticalsearchengine.Thesolutionspertainingtotheseproblemsaregivenaswell,forexample,thepreventionofcrawlingsamehomepagerepeatedlyandtheexpansionofspecialisedtermsli2brary.Thesystemhashighpracticality.

Keywords Searchengine Verticalsearch Spider Lucene

0 引 言随着信息技术的快速发展,互联网已经成为人们获知信息的重要渠道。面对互联网如此庞大复杂的信息资源,仅依靠浏览器浏览的方式来获得我们所关心的信息是非常困难的,这就促使了网络搜索引擎的出现和快速发展。搜索引擎整合了众多网站的信息,将大量信息整合在一个平台上供用户检索,起到了信息导航的作用,已成为人们获取信息的有效工具。但是互联网的信息量呈爆炸趋势增长,每天都有数以万计的网页出现在互联网,使得搜索引擎对网络信息的覆盖率和搜索出结果的相关性、准确性在整体上呈下降趋势。检索出的结果集数量之多,经常都是几十万条甚至是几百万条记录,其中存在着大量的重复信息或是与检索主题无关的信息,要想从中快速、准确地找出所需要的信息变得越来越困难。人们需要更具有针对性、能快速准确定位信息的搜索引擎———垂直搜索引擎。本文通过对垂直搜索引擎原理的深入了解,设计并实现了一个用于手机信息检索的垂直搜索引擎。与其它一些垂直搜索引擎的研究相比,本文更为深入和实际地研究了垂直搜索引擎亟待解决的关键问题,并给出了解决方案,通过手机垂直搜索引擎实例也很好地证明了方案的可行性和实用性。1 垂直搜索引擎的原理和关键技术1.1 垂直搜索引擎的原理垂直搜索引擎是相对通用搜索引擎的信息量大、查询不准确、深度不够等提出来的新的搜索引擎服务模式,通过针对某一特定领域、某一特定人群或某一特定需求提供的有一定价值的信息和相关服务[1]。其特点就是“专、精、深”,且具有行业色彩,相比较通用搜索引擎的海量信息无序化,垂直搜索引擎则显得更加专注、具体和深入。可以简单地把垂直搜索引擎说成是搜索引擎领域的行业化分工,它为用户提供的并不是上百甚至上千万相关网页,而是范围极为缩小、极具针对性的具体信息。垂直搜索引擎通过网络爬虫在互联网上爬取某一特定领域的专业信息网页,并对爬取到的网页进行解析和处理,形成专业信息数据库,并对这些数据进行索引,形成索引库。用户在搜索引擎的客户端键人要查找的关键词,搜索引擎就会在索引库中找出与该关键词相匹配的摘要信息和URL,并将结果显示给用户,用户可根据输出的结果选择并访问相关站点。1.2 垂直搜索引擎的关键技术1.2.1 网络爬虫技术网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。爬虫通常是从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。网络爬虫的实现需要一个支持HTTP协议的编程工具包,

本文所使用的是HttpClient,它是Apache的一个开源项目,用来

第7期 刘运强:垂直搜索引擎的研究与设计131 

提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。1.2.2 信息处理技术信息处理指的是在爬虫爬取的过程中能对无关网页进行过滤并且能对爬取到的网页进行解析,抽取出和主题相关的信息。这里需要用到网页解析工具HtmlParser,它是sourceforge上的一个开源项目,它提供了线性和嵌套两种方式来解析网页,主要用于Html网页的转换以及网页内容的抽取[2]。1.2.3 信息检索技术信息检索主要包含两部分的内容:索引和检索。对爬取的网页内容抽取整理后建立倒排索引,用户检索时搜索引擎会根据事先建立的索引文件确定查询结果。这里采用的是Lucene。Lucene也是Apache的一个开源项目,是一个全文检索引擎工具包,它提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene可以对任何的数据做索引和搜索。Lucene不管数据源是什么格式,只要它能被转化为文字的形式,就可以为Lu2cene所分析利用。也就是说不管是txt、Word、PDF、数据库还是其他什么形式的文件,只要可以从中抽取出文字形式的内容,就可以基于Lucene为其建立索引以及搜索。Lucene的系统结构如图1所示。图1 Lucene系统结构从图1可以清楚地看到,Lucene系统是由基础结构封装、索引核心、对外接口3大部分组成[3]。Lucene的源码共由7个包组成,下面介绍最为重要的几个包的功用:(1)org.apache.lucene.document 这个包提供了一些为封装要索引的文档所需要的类,比如Document、Field。这样,每一个文档最终被封装成了一个Document对象。(2)org.apache.lucene.analysis 这个包主要功能是对文档进行分词,因为文档在建立索引之前必须要进行分词,所以这个包的作用可以看成是为建立索引做准备工作。(3)org.apache.lucene.index 这个包提供了一些类来协助创建索引以及对创建好的索引进行更新。这里面有两个基础的类:IndexWriter和IndexReader,其中IndexWriter是用来创建索引并添加文档到索引中的,IndexReader是用来删除索引中的文档的。(4)org.apache.lucene.search 这个包提供了对在建立好的索引上进行搜索所需要的类。比如IndexSearcher和Hits,In2dexSearcher定义了在指定的索引上进行搜索的方法,Hits用来保存搜索得到的结果。2 垂直搜索引擎的分析与设计2.1 系统的设计目标本文设计实现的是一个用于手机信息检索的垂直搜索引擎,旨在实现准确、方便、快速查找手机信息的检索工具。用户只需要简单地输入手机的名称或相关参数作为关键词就能够找到各大手机商城所有销售手机中与该关键词相关的手机信息,

为使用者提供最新、最准确、最全面的手机信息。用户可以通过该系统查看到手机的详细信息,包括手机品牌、型号、报价、参数和手机图片等。2.2 系统的总体结构垂直搜索引擎(手机信息检索系统)主要由信息采集、信息处理和信息检索等模块组成,如图2所示。

图2 垂直搜索引擎系统结构图垂直搜索引擎的工作主要由以下区三部分来完成:

(1)信息采集 信息采集是通过网络爬虫来实现的,也就

是图中的Web爬虫模块。设定待爬取的资源为包含较全手机信息的几个大型网站,如太平洋手机网、163手机信息网、北斗手机网等,那么基于HttpClient构建的网络爬虫就可以实现抓取特定范围的、和手机相关的信息页面。(2)信息处理 信息处理是指对爬取下来的网页进行过

滤、解析和抽取,最终得到需要的有价值的信息。在图2中可以看到,网页解析后有三个转向:

解析得到的URL先经过判断是否被访问过,打上相应的标志后存储到BerkeleyDB(以下简称BDB)中,为信息采集模块服务,这样可以有效地避免重复爬取的问题;

解析得到的手机品牌、型号等词汇添加到专业扩展词库中,

为信息检索模块服务。专业词库的建立可以提高信息的查全率,弥补了传统的基于词库的检索系统由于词库中缺少相关词汇而检索不到信息的不足;

解析得到的手机信息(品牌、型号、价格、参数等)存储到数据库中。(3)信息检索 信息检索主要包括索引、检索和用户接口。

首先对保存在数据库中的手机信息进行索引,然后用户就可以通过用户接口,提交关键字进行查询,系统的检索模块接收到查询关键字后,在索引中快速查找并将结果返回给用户;还可以进一步查询保存在数据库中的信息,以获得相应手机的详细信息。

3 系统的关键问题及解决方法3.1 网络爬虫的实现构建一个垂直搜索引擎,爬虫是必不可少的工具,由于爬虫

相关主题