洲一一!一亩.esl训lJ比一.一奋.‘努二一一..1.1甲匀=一lwees宁d一一三.甲华|.上甲一昌肠一郁姗J、匕=、是互联网的迅速发展和广泛普及导致网上信息急速增长,如何在庞大的互联网上获得所需信息已成为用户日益关注的问题,搜索引擎正是为解决这个问题而出现的技术,它指根据一定的策略、运用特定的计算机程序在互联网中搜集信息,对信息进行理解、提取、组织和处理,并为用户提供检索服务,从而达到信息导航的目的。一、Web搜,引工工作耳理一个搜索引擎程序主要由搜索器()、索引器(工ndex)、检索器()和用户接口(Ul,)等四个部分组成,主要存储设备由页面存储器()和存储桶()两部分组成。搜索器()本质上是一种计算机爬虫(Sp记er)程序,它自动从上不断抓取各种web网页信息,再将页面原始内容经过压缩处理,存入本地页面存储库,以备索引器所用。索引器()程序定期从页面存储库中取出网页原始信息,对其页面内容进行分析和分解,以单词为主关键字进行索引,并初步进行排序处理,结果存入适当的“存储桶()”,即硬件存储单元中。
当互联网用户通过用户接口Ul提交查询时,检索器()程序根据用户输入的查询关键词,在已由索引器()完成索引和初步排序的存储桶()中进行查找,并采用特定的页面优先级算法对其结果进行最终排序,使之尽可能符合用户查询需求。最后,用户接口UI将最终查询结果呈现在互联网用户面前。二、Nutch分布式搜,引,的分析(一)Nutch简介Nutch是一个诞生于2003年用Java语言开发的开源互联网搜索引擎,其目标是建立一个开源的、灵活的、易扩充的、世界一流的贾eb搜索引擎。本文的试验是基于如teh0.9,该版本建立在.0.0、和.7.1的基础之上。.9利用进行中文分词、索引和搜索,利用做一些分布式计算,例如建立索引、抓取网页等.(二)Nutch的总体架构Nutch可以分为抓取和搜索两个部分。抓取程序抓取页面并把抓取回来的数据做成反向索引,搜索程序则对反向索引搜索回答用户的请求。抓取程序和搜索程序的接口是索引,两者都使用索引中的字段。实际上搜索程序和抓取程序可以分别位于不同的机器上。图l为Nutch的总体架构。
(三)Nutch总体流程首先,网页收集程序通过定期收集和增量收集方式从互联网中抓取网页,并将原始网页建立索引并存入数据库中。然后建立索引程序则从抓取过来的网页提取其中的URL、标题、内容等关键词,将不同格式的数据源转换成其内部可以识别的文件格式,再建立倒排文件,即用文档中的关键词作为索引,文档作为索引目标的一种结构,从而建立并维护索引库。最后查询服务程序接收用户提交的查询词条,加以分词与过滤,在索引库及数据库中搜索相应的网页,并按照其内部评分算法对结果进行排序,返回结果。Nutch的总体流程如图2所示。W七bdb厂呈飞图的总体架构,允七致据库索引程序抓取结果排序查询状奋图的总体流程三、Lucen.中文分月茸法的改班(一)中文分词缺点把中文的汉字序列切分成有意义的词,就是中文分词,也称为切词。中文分词技术属于自然语言处理技术范畴,对于一句话,人可以通过自己的知识来明白嘟些是词,哪些不是词,但如何让计算机也能理解?其处理过程就是分词算法。现有的分词算法可分为三大类,基于字符串匹配的