当前位置:主页 > 科技论文 > 搜索引擎论文 >

机器人搜索引擎_主题搜索引擎的研究与应用

发布时间:2016-11-10 19:14

  本文关键词:主题搜索引擎的研究与应用,由笔耕文化传播整理发布。



成都理工大学 硕士学位论文 主题搜索引擎的研究与应用 姓名:黄波 申请学位级别:硕士 专业:地球探测与信息技术 指导教师:苗放 20070601

摘要

主题搜索引擎的研究与应用
作者简介:黄波,男,1981年9月出生,2004年9月从师于成都理工大学苗放教授, 于2007年6月毕业于成都理工大学地球探测与信息技术专业。




搜索技术的进步使得人类对数据、信息、知识进入了前所未有的共享模式。 搜索是虚拟的人类意识。搜索技术反映个体在特定时期和范围内的行为取向和信 息喜好,无数搜索的集合和综合信息最终可以用以推测人类作为整体的文化属 性。 随着信息多元化的增长,千篇一律的给所有用户同一个入口显然已经不能满 足特定用户更深入的查询需求。因此我们需要一个分类细致精确、数据全面深入、 更新及时的面向主题的搜索引擎。主题搜索引擎是针对某一特定领域提供的有一 定价值的信息和相关服务。以构筑某一主题领域的Internet网络信息资源库为 目标,智能地在互联网上搜集符合此主题需要的信息资源。其特点就是“专、精、 深”,且具有行业色彩。 本文在基于Lucene搜索引擎框架的研究和应用基础上,对它的设计原理和 特色以及评分体系进行深入的研究。Nutch是一个建立在Lucene核心之上的Web 搜索的实现。本文利用Nutch易于扩展的插件机制进行二次开发。研发一个第三 方工具把Lucene特殊的数据格式转化为可视化的结构,以便研发人员对索引数 据进行分析查询。本文提出按主题行业分类信息,建立相关主题词库的观点,更 高效的快速建立主题搜索引擎,并结合改进的中文分词技术进行验证实现。论述 了主题搜索引擎对行业应用的可适用性。 关键词:搜索引擎,中文分词,知识共享,倒排索引,主题词库

成都理工大学硕士学位论文

The research and application of Topic—specific Search Engine
Introduction of the Author:HuangBo was born on Sep,1 98 1.Under the guidance of Prof.Miao Fang.,he was graduated from College of Information Engineering at Chengdu University of Technology.

ABSTRACT
Search

technology

progress made Search

human
is


sharing unprecedented virtual

access on

data,

information and
technology
Can be

knowledge,

human

consciousness,

search

reflected the behavior

and

information
and

preferences in the individual

specific period,the set of countless search

comprehensive
as a

information

eventually

used to speculate the direction of mankind

whole cultural.
users

With the

growth of multi-information,providing all meet specific
user’S

with the same

entrance


apparently unable to

needs

in-depth inquiry.So we need

topic.oriented search engine which update timely for
a on

Can

classify accurate,comprehensive


and

in?depth,

data.Topic—specific search engine is tied to provide

specific field

certain value of the

information and
resources

related services.The target is to build

intemet

information

resources

in some particular topic area,intelligent gathering the
on

related topic

information

the intemet.Its feature is the”specialized,

sophisticated,deep”and the
This paper based
on

industry
Lucene

background.
search engine framework for the research

and

application,it described in detail the design in the scoring system.Nutch is of lucene.Nutch provide
a a

and

characteristics.It also studies deeply
on

web search implementation which built

the base

complete plug—in mechanism which Can be easily extended


for secondary development.This paper develops lucene special data

third-party tool to visualize the

format,in

order

to

convenience the developers to


analyze and

search the indexing data.This paper raise

view to establish




related topic-dictionary

for all kinds of different related industry,and establish

topic search engine more

efficiently,and certify

it

by the help

of improved that

Chinese word

segmentation

techniques.Then
to

discussed the applicability

the topic search engine applied

some industry.

Keywords:Search

engine,Chinese

Segmentation,Knowledge Sharing,Inverted

index,Topic dictionary

II

独创性声明

本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的 研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其

他人已经发表或撰写过的研究成果,也不包含为获得盛壑理王太堂或其他教
育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何 贡献均已在论文中作了明确的说明并表示谢意。

X-P
学位论文作者导师签名: 学位论文作者签名:

\勿饮
加7年6月
乙日

苍,胺

学位论文版权使用授权书

本学位论文作者完全了解盛都堡王太堂有关保留、使用学位论文的规定,
有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和

借阅。本人授权盛壑理王太堂可以将学位论文的全部或部分内容编入有关数
据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。 (保密的学位论文在解密后适用本授权书)

学位论文作者签名:

事,波 乞滞
‘月1日

第1章引言

第1章引言
1.1搜索技术对人类的社会意义
最初搜索引擎技术和资本门槛本身并不高,但随着人性因素的彰显而进入深 度竞争阶段的互联网时代来临之后,搜索之争趋于深度竞争,深刻理解搜索对于 人类的社会意义将成为竞争战略和策略的研判前提。 一、搜索是社会化的信息处理 搜索技术的发展使得人类对数据、信息、知识的存取运动进入前所未有的共 享模式。在传统知识的整理层面,搜索技术的目标是重新建立人类传统知识的存 取秩序;在新知识的创新生产层面,搜索技术的目标是促进协同型知识机制的完 善,进而形成全面大众全面参与的知识社会;在社会公共生活层面,搜索技术的 目标是让自然界人类社会和思维的有用知识实现客观、公正、高效、完整的共享; 在个人化的网络生存层面,搜索技术的目标是方便个人无后顾之忧的获得最好的 信息。由上可知,搜索技术发展的目标是成为一种综合而客观的人类生存系统, 从个人和社会层面改变人类的生存状态。在不同层面,搜索的要求也会分别侧重 于客观、准确、及时、深入、创新、联系、思想、个性、娱乐、学习、教育等不 同的特性要求,人类社会生活有多么丰富多彩,搜索技术的未来空间就有多么宏 大无穷,搜索门类及其竞争领域就有多么复杂综合。在目前搜索发展阶段,大而 全的搜索巨头占据搜索舞台的主角地位,虽然未来多样化搜索竞争的战国时代必 然来临,但是当前搜索竞争的基本出发点还是必须建立在适度集中的搜索格局的 历史条件之上,Google、百度等搜索巨头的方向,往往代表了人类搜索技术基于 现状的中期方向,其中最为核心的特征便是搜索竞争的深度化。 二、搜索是社会化的信息再生产 搜索技术进步使得个人、组织和社会面对全新的信息结构和知识模式,也使 得传统的、现实的、未来的信息面临全新的个人、组织和社会的需求特征,在两 者共同影响下,信息生产领域发生必然的变革,其典型标志便是搜索技术成为社 会化的信息生产的重要组成部分。搜索技术使得隐知识更深入快速的转化为显知 识,使得知识传播的范围空前扩大,使得社会性使用知识的权利空前平等,使得 个人的集合力量得以影响权威的形成、影响知识分享权力、影响知识生产过程, 在此基础上一种基于搜索的无界、高效、平等特性的全新的社会化信息再生产机 制应运而生,搜索的过程自身也因为其社会化属性而产生出人类前所未见的新信 息资源。

成都理丁大学硕+学位论文

三、搜索是虚拟的人类意识 人类的社会化特征是实现人类智能化的捷径,无数个体的关系集成、思维行 动及其综合形成的动态文化最终构成相对整体性的人类群体特征。进而指引全社 会进行人工智能似的思维和进步。以此角度看,搜索技术反映个体在特定时期和
范围内的行为取向和信息喜好,通过搜索我们获得了一条体现人类共同文化、时

尚、思维、偏好的新思路,无数搜索的集合和综合信息最终可以用以推测人类作 为拟人整体的文化属性,搜索信息流从某个角度完全可以视同人类社会的部分大 脑思维潜流,如果说过去因为搜索技术没有出现我们无法由信息集合的角度感受 人类虚拟大脑的思维流动,那么搜索技术的进步和成熟,搜索行为和信息的国民 性扩张,带领我们进入全新的人类自我意识的社会外化过程,通过搜索,人类个 体与人类整体之间可以实现空前畅通的对话。 四、搜索是全新的社会关系的大生产 搜索从面向信息的表层发展阶段必然向面向社会关系的深层发展阶段前进, 搜索的目的将不仅仅是对于信息的搜索,同时也是对于社会行为和社会关系的搜 索。从个体需求角度看,搜索满足对于信息的个性化需求;从组织需求的角度看, 搜索同时满足对于信息、社会行为特征和社会关系的个性化需求。一方面搜索技 术和服务的进步使得人类社会的共享型搜索数据库日益庞大,与此相对应人类知 识结构秩序的变革也必然日益深入,进一步与此相对应人类的基于知识的权力结 构的变革也必然日益深入。所以,未来社会性的强权来自庞大的搜索巨头并不是 杞人忧天。另外一方面,搜索技术和服务的进步使得人类社会行为特征和思维流 日益外化,历年积累的人类搜索进程的庞大数据成为搜索巨头的另外一大权力来 源,对这一权力源的监控和公开化必然在不远的将来列于网络最重要的议题之 一。由于搜索在社会关系变化中的外化和监控功能,搜索服务商在社会关系方面 可以发挥更大的影响力。从这个角度看,无论是否公开和共享搜索行为数据,搜 索技术本身都会自发的进行社会关系的大生产,只是其中存在是否公开流程、是 否大众参与、是否分享权力的不同情况而已【51。

1.2搜索引擎的发展历史
在互联网发展初期,网站相对较少,信息查找比较容易。然而伴随互联网爆 炸性的发展,普通网络用户想找到所需的资料简直如同大海捞针,这时为满足大 众信息检索需求的专业搜索网站便应运而生了。 现代意义上的搜索引擎的祖先,是1990年由蒙特利尔大学学生Alan
Emtage

发明的Archie。虽然当时World Wide Web还未出现,但网络中文件传输还是相



第1章引言

当频繁的,而且由于大量的文件散布在各个分散的FTP主机中,查询起来非常 不便,因此;klanEmtage想到了开发一个可以以文件名查找文件的系统,于是便 有了Archie。 Archie工作原理与现在的搜索引擎已经很接近,它依靠脚本程序自动搜索网 上的文件,然后对有关信息进行索引,供使用者以一定的表达式查询。由于Archie 深受用户欢迎,受其启发,美国内华达System 外,已能检索网页。 当时,“机器人”一词在编程者中十分流行。电脑“机器人”是指某个能以 人类无法达到的速度不间断地执行某项任务的软件程序。由于专门用于检索信息 的“机器人”程序像蜘蛛一样在网络间爬来爬去,因此,搜索引擎的“机器人” 程序就被称为“蜘蛛”程序。 世界上第一个用于监测互联网发展规模的“机器人”程序是Matthew 开发的World
wide Web Gray

Computing

Services大学于1993

年开发了另一个与之非常相似的搜索工具,不过此时的搜索工具除了索引文件

Wanderer。刚开始它只用来统计互联网上的服务器数量,

后来则发展为能够检索网站域名。与Wanderer相对应,Martin Koster于1993 年lO月创建了ALIWEB,它是Archie的HTTP版本。ALIWEB不使用“机器人”程 序,而是靠网站主动提交信息来建立自己的链接索引,类似于现在我们熟知的
Yahoo。

随着互联网的迅速发展,使得检索所有新出现的网页变得越来越困难,因此, 在Matthew Gray的Wanderer基础上,一些编程者将传统的“蜘蛛”程序工作原 理作了些改进。其设想是,既然所有网页都可能有连向其他网站的链接,那么从 跟踪一个网站的链接开始,就有可能检索整个互联网。到1993年底,一些基于 此原理的搜索引擎开始纷纷涌现,其中以JumpStation、The
Worm,和Repository—Based
Software World Wide Web

Engineering(RBSE)spider最负盛名。

然而JumpStation和w聊Worm只是以搜索工具在数据库中找到匹配信息的先后 次序排列搜索结果,因此毫无信息关联度可言。而RBSE是第一个在搜索结果排 列中引入关键字串匹配程度概念的引擎。 最早现代意义上的搜索引擎出现于1994年7月。当时Michael Mauldin将
John

Leavitt的蜘蛛程序接入到其索引程序中,创建了大家现在熟知的Lycos。

同年4月,斯坦福大学的两名博士生,David Filo和美籍华人杨致远共同创办 了超级目录索引Yahoo,并成功地使搜索引擎的概念深入人心。从此搜索引擎进 入了高速发展时期。目前,互联网上有名有姓的搜索引擎已达数百家,其检索的 信息量也与从前不可同日而语。 随着互联网规模的急剧膨胀,一家搜索引擎光靠自己单打独斗已无法适应目

成都理T大学硕+学位论文

前的市场状况,因此现在搜索引擎之间开始出现了分工协作,并有了专业的搜索 引擎技术和搜索数据库服务提供商。比如国外的Inktomi,它本身并不是直接面 向用户的搜索引擎,而是向包括LookSmart、MSN、HotBot等在内的其他搜索引 擎提供全文网页搜索服务。国内的百度也属于这一类,搜狐和新浪用的就是它的 技术。因此从这个意义上说,它们是搜索引擎中的搜索引擎。‘293

1.3搜索引擎分类
搜索引擎按其工作方式主要可分为三种,分别是全文搜索引擎、目录索弓1类 搜索引擎和元搜索引擎。全文搜索引擎是最广泛也是用得最多的一种,一般所说 的搜索引擎都指的是全文搜索引擎。 全文搜索引擎是名副其实的搜索引擎,具代表性的有Google、Inktomi、百
度、中搜等。它们都是通过从互联网上提取的各个网站的信息而建立的数据库中,

检索与用户查询条件匹配的相关记录,然后按一定的排列顺序将结果返回给用
户,因此他们是真正的搜索引擎。

从搜索结果来源的角度,全文搜索引擎又可细分为两种,一种是拥有自己的 检索程序,并自建网页数据库,搜索结果直接从自身的数据库中调用;另一种则 是租用其他引擎的数据库,并按自定的格式排列搜索结果。 目录索引虽然有搜索功能,但在严格意义上算不上是真正的搜索引擎,仅仅 是按目录分类的网站链接列表而已。用户完全可以不用进行关键词查询,仅靠分 类目录也可找到需要的信息。目录索引中最具代表性的是Yahoo。国内的搜狐、 新浪、网易搜索也都属于这~类。 元搜索引擎在接受用户查询请求时,同时在其他多个引擎上进行查询,并将 结果返回给用户。著名的元搜索引擎有InfoSpace、Vivisimo等,中文元搜索引 擎中具代表性的有搜星搜索引擎。在搜索结果排列方面,有的直接按来源引擎排 列搜索结果,如Dogpile,有的则按自定的规则将结果重新排列组合,如
givisimo。

除上述三大类引擎外,还有以下几种非主流形式: 1、集合式搜索引擎:如HotBot在2002年底推出的引擎。该引擎类似META 搜索引擎,但区别在于不是同时调用多个引擎进行搜索,而是由用户从提供的4 个引擎当中选择,因此叫它“集合式”搜索引擎更确切些。 2、门户搜索引擎:如AOL
Search、8SN

Search等虽然提供搜索服务,但自

身既没有分类目录也没有网页数据库,其搜索结果完全来自其他引擎。 3、免费链接列表:这类网站一般只简单地滚动排列链接条目,少部分有简



第1章引言

单的分类目录,不过规模比起Yahoo等目录索引来要小得多。 由于上述网站都为用户提供搜索查询服务,为方便起见,我们通常将其统称 为搜索引擎。

1.4搜索引擎组成及工作原理
搜索引擎主要由网络蜘蛛,索引器和查询器三部分组成。
(1)网络蜘蛛(Web Spider)的主要功能是从指定的地址或网页出发遍历互联

网收集网页,并沿着任何网页中的所有URL爬到其它网页,重复这过程,并把爬 过的所有网页收集到页面存储库中。 (2)索引器(Indexer)对收集回来的网页进行分析,提取相关网页信息(包括 网页所在URL、编码类型、页面内容包含的关键词、关键词位置、生成时间、大 小、与其它网页的链接关系等),根据一定的相关度算法进行大量复杂计算,得 到每一个网页(针对页面内容)及超链中每一个关键词的相关度(或重要性),然后 用这些相关信息建立网页索引数据库。 (3)当用户输入关键词搜索后,搜索请求经过分解,由查询器(Searcher)从 网页索引数据库中找到符合该关键词的所有相关网页。所有相关网页针对该关键 词的相关信息在索引库中都有记录,只需综合相关信息和网页级别形成相关度数 值,然后进行排序,相关度越高,排名越靠前。最后由页面生成系统将搜索结果 的链接地址和页面内容摘要等内容组织起来返回给用户。 搜索引擎的工作流程可以简化归结为以下四个步骤: (1)网上抓取网页: (2)建立索引数据库: (3)在索引数据库中搜索: (4)对搜索结果进行处理和排序。 网络蜘蛛从互联网上抓取网页,把网页送入页面存储库,从网页中提取URL, 把URL送入URL数据库,网络蜘蛛控制得到网页的URL,控制网络蜘蛛抓取其它 网页,反复循环直到把所有链接的网页抓取完成。这其间也可以控制对网页索引
的深度和数目。

系统从页面存储库中得到文本信息,送入索引器模块建立索引,形成索引库。 同时进行链接信息提取,把链接信息(包括锚文本、链接本身等信息)送入链接数 据库,为网页评级提供依据。



成都理丁大学硕十学位论文

1.5本文研究内容和成果
本文首先对搜索引擎的发展历史、现状、存在的问题及其未来发展趋势进行 了探讨,提出了基于行业主题词库的搜索引擎的研究思路,对主题词库进行优化 改进,并把计算所的提供的中文分词技术引进nutch中。本文提出按主题行业分 类信息,建立相关主题词库的观点,更高效的快速建立主题搜索引擎。 本文对搜索引擎的研究成果如下: (1)本文通过提出按主题行业分类信息,建立相关主题词库的观点,选择性 能好、效率高、经济合理的技术框架,从而更高效的快速建立主题搜索引擎。 (2)对开源框架lucene的源码和结构进行了较为深入的研究,并在此基础上 进行二次开发,研发一个数据管理工具把lucene特殊的数据格式转化为可视化 的结构,以便研发人员对索引数据进行分析查询。 (3)对某一主题网站建立索引库,并进行分析查询,把自己建立的主题搜索 引擎查询结果和网站现有的搜索结果进行比较分析,得出了较有意义的结果。

1.6本文组织结构
本论文的总体结构是从理论的分析研究到实践尝试的过程,它由四个部分组
成:

第1章:引言。主要通过阐述搜索引擎的社会意义,发展历史以及组成和工 作原理,进一步得出研究搜索引擎的必要性和发展意义。 第2章:主题搜索引擎。讲述主题搜索引擎的研究内容,发展现状和突破创 新点,突出选择主题搜索引擎作为研究目标的可行性。 第3章:Lucene的实现原理及相关技术。通过对开源框架Lucene进行详细 深入的研究,对实现源码加以改进,并引入相关增强用户体验的Ajax技术和中 文分词技术来改进搜索引擎。 第4章:主题搜索引擎的实现。通过建立一个实例搜索引擎来加以对比分析。 建立相关主题词库来优化索引内容,引入计算所的中文分词处理方式来改进主题 搜索引擎的查询结果。



第2章主题搜索引擎

第2章主题搜索引擎
2.1主题搜索引擎研究的目的和意义
搜索是一种服务,外界对搜索引擎的评价体系形式多样,除了当前的竞价排 名,未来基于搜索的商业模式和业务模式会在网络广告、电子商务、付费信息服 务等方面有所突破,个性化搜索及搜索分析将占主导地位。 选择研究主题搜索而不是通用搜索引擎的原因: (1)搜索引擎的技术门槛

越来越高。Google的创始人是超级名校Staaford计算机系的PHI),Baidu的Robin Li也是领了多项搜索技术专利才敢切入搜索领域。可以说,没有3年以上的搜 索技术积累,请不要涉及搜索领域。(2)搜索引擎的资金投入非常大,Google 光是爬虫服务器就数万之巨,再加上网络带宽的购买,相信这些投入非一般人可 以承受。可以说,没有千万级别的资金在手,请不要进入搜索引擎领域。(3) 通用搜索引擎经过多年的发展已经非常成熟,各个巨头都已经各自占山为王,在 快鱼吃慢鱼的互联网里,落后就意味着无法生存。 随着信息多元化的增长,千篇一律的给所有用户同一个入口显然已经不能满 足特定用户更深入的查询需求。同时,这样的通用搜索引擎在目前的硬件条件下, 要及时更新以得到互联网上较全面的信息是不太可能的。针对这种情况,我们需 要一个分类细致精确、数据全面深入、更新及时的面向主题的搜索引擎。由于主 题搜索运用了人工分类以及特征提取等智能化策略,因此它将更加有效和准确。

2.2主题搜索引擎的发展
搜索引擎是上世纪90年代兴起的信息检索技术,经过十多年的发展,它已 经渗透到了人们生活的各个领域。然而,传统的搜索引擎,也即通用搜索引擎, 考虑了所有人的需求,即不管用户是希望找计算机论文方面的信息还是要找篮球 运动的信息都一致对待,这样的搜索引擎需要耗费巨大的资源而速度较慢。并且, 由于通用搜索引擎所面向的领域太广泛,某些利于用户提高检索精度和查全率的 技术,比如自动分类,在其中的应用效果不理想。 所谓主题搜索引擎,是针对某一特定领域、某一特定人群或某一特定需求提 供的有一定价值的信息和相关服务。以构筑某一专题或学科领域的Internet网络 信息资源库为目标,智能地在互联网上搜集符合这一专题或学科需要的信息资 源,能够为包括学科信息门户、专业信息机构、特定行业领域、公司信息中心、


成都理T大学硕+学位论文

行业专家等等在内的信息用户,提供整套的网络信息资源解决方案。其特点就是 “专、精、深”,且具有行业色彩。它是与通用搜索引擎截然不同的引擎类型。主 题搜索引擎专注具体、深入的纵向服务,致力于某一特定领域内信息的全面和内 容的深入,这个领域外的闲杂信息不收录。

2.3主题搜索引擎的突破与创新
主题型搜索引擎与通用搜索引擎存在着很大的差别: (1)服务目的不同 通用搜索引擎面向任何用户提供对任何信息的查询,而主题型搜索引擎则面 向专业用户向他们提供对特定专业的信息检索。 (2)搜索方式不同 通用搜索引擎对网络进行逐页的爬行,试图遍历整个Web。而主题型搜索引 擎则采用一定的策略预测相关网页的位置,动态的调整网页爬行方向,使系统尽 可能的在与主题相关的网页集中的地方爬行,这节约了大量的网络资源。 (3)对硬件和网络的要求不同 通用搜索引擎对硬件需求高,而主题型搜索引擎由于没有遍历整个Web节 约了大量的网络资源,而且没有自己的大型索引数据库,硬件需求也比较低。 主题搜索引擎的优势,将决定它在互联网的一席之地。主题搜索的突破点和
创新点在于: (1).实时性

主题搜索引擎需要获取的信息来自于某一特定领域的,这比起通用搜索引擎 漫无边际的信息抓取,有一个非常大的优势,那就是信息的实时性。由于互联网 上的信息量非常巨大,通用搜索引擎的数据更新周期短则十几天,长则几个月, 而主题搜索引擎的数据更新完全可以以秒为单位。 (2)数据挖掘分析,报表 行业的历史发展、最新动向、趋势都是行业从业人员非常关注的话题。主题 搜索引擎集中了行业海量的信息和数据,基于这些信息和数据的商务智能分析, 将为行业创造非常有价值的信息增值服务。 (3)个性化,社会化 查询服务只是主题搜索引擎的一部分,主题搜索引擎在用户的个性化方向的 发展非常重要。主题搜索引擎不能只提供一个窗口,它应该是一个用户高度参与 交互的社会化平台。主题搜索引擎需要能够获取并且分析用户的偏好信息,从而 提供更加完善而且准确的数据服务。 (4)智能化语义网


第2章主题搜索引擎

语义网将有可能成为下一代互联网,这样网络上的数据和信息将被计算机程 序所理解。这将为主题搜索引擎提供一个巨大的机会,爬虫程序如果能理解网络 上的数据,将对信息的收集和整理更加准确和专业,搜索服务的查全率和查准率
将更高。

(5)多元化查询 目前的搜索引擎,都只局限于关键字搜索,其中主要的原因是,对用户的查 询需求无法建模,无法模式化。而关键字搜索带来的问题是,搜索结果过多,并 且不准确。互联网信息量越大,这种情况越严重,甚至可以说是灾难。多元化查 询服务的提供,将会成为对抗竞争对手的杀手锏。 主题搜索引擎有着自己独特的架构(如图2.1),有针对该相关主题领域的 主题词库,以供在建立索引时能够更加集中的把相关信息给予更高得评分。并随 时更新词库。

——————一查询k——一 l接El I
查询,返回结果 查询日击 用户 l查询日志

索引信 息库


计算机专业词

建立倒排 索引
自动 更新

,,

文档过滤、 特征提取

计算机

兰警E
档集

主题词



I#Ⅱ±目甘口

爬虫

原始信

息库 图2.1主题搜索引擎架构
Fig.2-1 Framework of Topic-specific search engine



成都理。r人学硕士学位论文

2.4主题搜索引擎的国内外研究现状
主题搜索引擎大都处于研究和试验阶段,利用它搜索的结果再经过专业人士

的加工而形成的面向某一学科、领域的网络垂直门户网站己经出现。目前面向主
题的网络信息搜索主要有两种技术:is]

一是基于内容的搜索。这类搜索方式是传统的信息检索技术的延伸。它的主 要方式就是在搜索引擎内部建立一个针对主题的词表,搜索引擎的爬行器根据其 内设的词表对网上的信息进行索引。各个不同的系统词表建设的复杂度也大不相 同。现在这种词表的建设越来越多的引入了知识表示的方法。基于本体论 (ontology)的搜索引擎开始出现。一个本体强调相关领域的本质概念,同时也强 调这些概念间的本质联系。以ontology为基础建立的词表能更好的显示一个领域 主题中各个概念(即搜索系统的检索词)之间的关系,能更好的表现一个主题。在 www的智能信息检索应用中,ontology通常作为用户感兴趣领域的领域模型, 同时还作为文档统一注释的知识表示语言。一些学者也提出了概念空间的理论, 用概念空间来实现语义索引。所谓概念空间是某个领域中一组抽象概念的集合, 并且这组概念之间存在一定的语义上的关联。基于概念空间的文本检索系统也较 好地解决了信息检索过程中的词汇不匹配的问题以及信息过载的问题,大大提高
了信息检索的效率和质量。

二是基于链接分析的检索。90年代末期,国外信息检索界开始以social network为模型对互联网进行模拟。一些学者认为网页之间的链接指引关系同社 会网络中的关系有相似之处,尤其与传统的引文索引非常相似。通过对链接进行 分析,可以找出各个网页之间的引用关系,由于引用网页与被引用网页在内容上 一般都比较相关,所以就可以很容易地按照引用关系将大量网页分类。在美国, 很多基于这种超链分析的检索系统原形己经产生,应用于他们的数字图书馆系统
中。

下面介绍一些较具有代表性的系统。
(1)Elsevier的Scirus系统

Scirus科学搜索引擎是一种专为搜索高度相关的科学信息而设计的搜索引 擎,获得2001《搜索引擎观察》授予的“最佳专业搜索引擎”奖。Scirus是目前 互联网上最全面、综合性最强的科技文献门户网站之一。它只面向包含有科学内 容的网站,如大学和作者个人主页以及Elsevier自己的数据库。
(2)Berkeley的Focused Project

这个系统由一个印度裔的科学家S.Charkrabarti带头从事,他是最早从事这 方面研究的人之一。该系统通过两个程序来指导爬行器:一个是分类器Classifier,

lO

第2章主题搜索引擎

用来计算下载文档与预订主题的相关度:另一个程序是净化器Distiller,用来筛选 那些指向很多相关资源的页面(也称中心网页)。 (3)NEC研究院的CiteSeer Citeseer是~个非常有名的针对计算机科学领域论文的检索系统。Citeseer
的核心是ACI(Automatically Citation index)M,它可以自动地对互联网上的电子

文件(Postscript和PDF等格式)进行索引并分类。 (4)美国国家科学数字图书馆的Collecfion
Building

Program(CBP)

这个项目旨在为科学、数学、工程和技术创建大规模的在线数字图书馆,试 图研究在某一主题上资源自动建设的可能性。CBP具有自己的特点:第一,因为 CBP是面向教育、面向教学的,所以主题精确度比覆盖度更重要;第二,CBP不 存储资源原文,而只是提供URL;第三,CBP只需要用户最少量的输入,如关键 词,系统就可以全自动的将有关该主题的最相关的有限数量URL返回给用户。

成都理工大学硕十学位论文

第3章Lucene的实现原理及相关技术
3.1

Lucene的框架结构
Lucene是一个高性能、可伸缩的信息搜索库。它可以为自己的应用程序添

加索引和搜索能力。Lucene是用java实现的成熟的、免费的开源项目,是著名 的Apache大家庭的一员,并且基于Apachc软件许可。同时,Lucene是当前与 近几年内非常流行的免费的Java信息搜索库。其实现框架(如图3-1)

图3-1
F;g.3-1

Luoene应用框架
AppI ied

fra㈣rk

in Lucene

Lucene是一个软件库,一个开发工具包,而不是一个具有完整特征的搜索 应用程序。它本身只关注文本的索引和搜索,并且这些功能完成的非常好。Lucene 使得应用程序只针对它的问题域来处理业务规则,而把复杂的索引和搜索实现隐 藏在一组简单易用的API之后。可以把Lucene认为成一层,而应用程序位于它
之上。

Lucene并不关心数据的来源、格式、甚至它的语言,只要它能转换成文本。 这意味着能够利用Lucene来索引和搜索以下格式的文件:远程WEB服务器上 的web页面,存放在本地文件系统中的文档,简单文本文件,MS.word文档, HrML或PDF文件,以至于其它任何能够抽取出文本信息的文件格式。同时

12

第3章Lucene的实现原理及相关技术

Lucent能够索引存储在数据库中的数据,给予用户许多数据库都不能提供的全 文检索功能。Lucent提供了一些核心类用于在应用程序中增加索引和搜索功能。
3.1.1

Lucene的详细结构分析

使用Lucent提供的API来做基础开发需要熟悉它的开发流程结构(如图3.2)

图3-2

Lucane的流程图
in Lucena

Fig.3-2 FIOW chart

Lucene十分精练纯粹,仅一个jar包,可以直接引用到工程中,通过调用其 接口,就可以为应用增添全文检索功能。Luccne使用起来很简单,与JDBC有 些类似。Lucene的结构很清晰,每个package司职一项,且Luccne的主要动作 都采用了抽象类,扩展起来十分方便。相对于一些商业化全文检索,Luccne的 入库速度更快。因为它的存储采取分步合并的方法,先建立小索引,待时机成熟 才把小索引合并到大索引树上。Lucent性能稳定,使用简单。因此,我们在操 作应用数据时可以同步进行全文检索库的操作而不会影响系统的效能。 Lucene的组成结构分析:对于外部应用来说索引模块(index)和检索模块
(search)是主要的外部应用入口:
表3-1
Tab e3-1 Lucene

API类包结构
UCOll0

Structure of I

AP I

成都理工大学硕十学位论文 查询分析器 存储结构 底层IO/存储结构 一些公用的数据结构

org.apache.Lucene.queryParsed org.apache.Lucene.document/ org.apache.Lucene.store/

org.apache.Lucene.util/

对文档进行索引,Lucene提供了五个基础的类,他们分别是Documem,Field,
IndexWriter,Analyzer,Directory。

Document:描述文档,文档可以是html,tXt等等,它由Field组成。可以把 Document看成记录,Field看成字段. Field:文档的属性,比如文档的标题。 Analyzer:在一个文档被索引之前,首先需要对文档内容进行分词处理,这 部分工作就是由Analyzer来完成的。Analyzer类是一个抽象类,它有多个实现。 针对不同的语言和应用需要选择适合的Analyzer。Analyzer把分词后的内容交 给IndexWriter来建立索引。 IndexWriter:是Lueene用来创建索引的一个核心的类,作用是把一个个的 Document对象加到索引中来。 Directory:这是一个抽象类,它目前有两个实现,第一个是FSDireetory, 它表示一个存储在文件系统中的索引的位置。第二个是RAMDirectory,它表示 一个存储在内存当中的索引的位置。 下面主要介绍lucene的各个文件包详细组成

1、org.apache.1ucene.document
以下介绍两种主要的类:

a)org.apache.1ucene.document.Document:
Document文档类似数据库中的一条记录,可以由好几个字段(Field)组成,

并且字段可以套用不同的类型(详细见b)。Document的几种接口(表3—2):

…超巳鱼
ield tring get(String

Tab I e3-2 Document

{——每连——
nterface

表3-2 Document接口

field)一

name)一 ield getField(String nanle) ield[】getFields(String

琴加一,字段.塑ieId)到Document—8P— 队文档中获得_个字壁塑空塑塞查
』由字段名获得字段值

na蔷了——码字段名获得字段值的藁

b)org.apache.1ucene.document.Field 即上文所说的“字段”,它是Document的片段section。
14

第3章Lucene的实现原理及相关技术

Field的构造函数: Field(String Banle,String string,boolean
8t01.e,boolean index,boolean

token)。

Indexed:如果字段是Indexed的,表示这个字段是可检索的。 Stored:如果字段是Stored的,表示这个字段的值可以从检索结果中得到。 Tokenized:如果一个字段是Tokenized的,表示它是有经过Analyzer转变后 成为一个tokens序列,在这个转变过程tokenization中,Analyzer提取出需要进 行索引的文本,而剔除一些冗余的词句。Token是索引时候的基本单元,代表一 个被索引的词,例如一个英文单词,或者一个汉字。因此,所有包含中文的文本 都必须是Tokenized的。
2、org.apache.Lueene.index

以下介绍两种主要的类: org.apache.Lucene.index.indexWriter是将文档加入索引,同时控制索引过程
中的各种参数。 org.apache.Lucene.index.indexReader删除索引中不要的文档

IndexWriter的构造函数有三种接口,针对目录Directory、文件File、文件 路径String三种情况。
例如IndexWfiteKString path,Analyzer
a’boolean

create),path为文件路径,a

为分析器,create标志是否重建索引(true:建立或者覆盖己存在的索引,false: 扩展已存在的索引。)
一些重要的方法:

表3-3 Index的函数
TabIe3—3 Index function

旦垄

!多莲

…t(D…ocume~nt旦盟
Indexes(Directory[]dirs)

鎏引添加二坌文档
蒋目录中已存在索引添加到这个索}

!!!!堡!!!!!!!!!!!!!旦!!!!!!!!
ptimize

牌提偿!堡曼f逐垫垩!整全塞!
并索引并优化 闭



10se0

IndexWriter为了减少大量的10维护操作,在每得到一定量的索引后建立新的 小索引文件,然后再定期将它们整合到一个索引文件中,因此在索引结束时必须 进行wirter.optimize0,以便将所有索引合并优化。
3、org.apache.1ucene.analysis

Analyzer分析器主要工作是筛选,一段文档进来以后,经过它,出去的时候 只剩下那些有用的部分,其他则剔除。而这个分析器也可以自己根据需要而编写。

成都理T大学硕士学何论文

org.apache.1ucene.analysis.Analyzer:这是一个虚构类,以下两个接口均继承
它而来。

org.apache.1ucene.analysis.SimpleAnalyzer:分析器,支持最简单拉丁语言。 org.apache.1ucene.analysis.standard.StandardAnalyzer:标准分析器,除了拉丁 语言还支持亚洲语言,并在一些匹配功能上进行完善。在这个接口中还有一个很
重要的构造函数:StandardAnalyzer(String[】stopWords),可以对分析器定义一些

使用词语,这不仅可以免除检索一些无用信息,而且还可以在检索中定义禁止的 政治性、非法性的检索关键词。
4、org.apache.1ucene.search

(1)org.apache.1ucene.search.indexSearcher是Lucene中最基本的检索工具,所 有的检索都会用到IndexSearcher检索工具,但是在使用IndexSearcher之前,还 要做一些准备工作,即对检索工具IndexSearcher进行初始化。 初始化IndexSeareher,需要设置索引存放的路径,这样才能让查询器定位索 引,用于后面进行搜索。如下为一个实例化IndexSearcher的过程:
Searcher searcher=new IndexSearcher(indexDir);

返回的结果是IndexSearcher类的一个实例,indexDir表示索引文件的存放路径。 以下是IndexSearcher的所有构造函数:
public

IndexSearcher(String path)throws IOException{

this(IndexReader.open(path),true); )
public

IndexSearcher(Directory directory)throws lOException{

this(IndexReader.open(directory),true); }
public

IndexSearcher(IndexReader r){

this(r,false); }
private

IndexSearcher(IndexReader r,boolean closeReader){

reader=r:

this.eloseReader=eloseReader;



可以看到,IndexSearcher一共提供了四种构造函数来初始化一个IndexSearcher 对象。第一个方法最为简单,它直接使用了索引存放的路径作为参数来构造对象。 第二种方式则是使用Directory类型的对象来构建IndexSearcher第三种是直接使 用IndexReader来初始化一个IndexSearcher对象。第四种则是在第三种的基础上 加了一个布尔型的开关,用于判断在关闭lndexSearcher时是否要关闭所带的 IndexReader对象。可以看出,实际上,无论传入的参数类型是什么,IndexSearcher 最终都还是使用IndexReader来做为实际的索引目录读取器。前三种构造函数均



第3章Lucene的实现原理及相关技术

首先根据传入的参数生成一个IndexReader对象,然后调用了第四种构造方法来 完成kndexSearcher的初始化工作。 (2)org.apache.1ucene.search.query只是Lucene的search包中的一个抽象类, 这个抽象类有许多子类,代表了不同类型的检索。如常见的TermQuery就是将 一个简单的关键字进行封装后的对象,类似的还有BooleanQuery,即布尔型的查 找。 搜索流程中的第二步就是构建一个Query。Query的中文意义就是“查询”。 在Lucene中,它是一个很重要的概念,就是指对于需要查询的字段采用什么样 的方式进行查询,如模糊查询、语义查询、短语查询、范围查询、组合查询等。 正是因为Query的存在,Lucene才有了非常丰富的查询语言。 在使用Query之前,需要首先生成一个Query对象。Lucene既允许直接生成 一个Query类型的对象,也允许使用QueryParser类的parse0方法来返回一个 Query类型的对象。这两种方法在功能上是完全一样的,只是后者在使用时更方 便一些,而前者则更为灵活. 当用户输入一个关键字,搜索引擎接收到后,并不是立刻就将它放入后台开 始进行关键字的检索,而应当首先对这个关键字进行一定的分析和处理,使之成 为一种后台可以理解的形式,只有这样,才能提高检索的效率,同时检索出更加 有效的结果。那么,在Lucene中,这种处理,其实就是构建一个Query对象。 IndexSearcher对象的search方法中总是需要一个Query对象(或是Query子类的 对象),下面来介绍各种Query类。

按词条搜索--TermQuery
“与或”搜索--BooleanQuery 在某一范围内搜索—_RangeQuery 使用前缀搜索--l'refixQuery 多关键字的搜索--PhraseQuery 使用短语缀搜索--PhrasePrefixQuery 相近词语的搜索--FuzzyQuery 使用通配符搜索--WildcardQuery TermQuery是最简单、也是最常用的Query。TerrnQuery可以理解成为“词 条搜索”,在搜索引擎中最基本的搜索就是在索引中搜索某一词条,而TermQuery 就是用来完成这项工作的。 在Lucene中词条是最基本的搜索单位,从本质上来讲一个词条其实就是一个名/ 值对。只不过这个“名”是字段名,而“值”则表示字段中所包含的某个关键字。 要使用TermQuery进行搜索首先需要构造一个Term对象,示例代码如下:

17

成都理工大学硕十学位论文

Term aTerm。new

Term(”contents”,。3ava”);

然后使用aTerm对象为参数来构造一个TermQuery对象,代码设置如下:
Query query=new TermQuery(aTerm);

这样所有在“contents”字段中包含有“java”的文档都会在使用TermQuery进 行查询时作为符合查询条件的结果返回。 (3)org.apache.1ucene.search.hits是搜索结果的集合类,搜索并处理返回结果。 在构建完Query对象后,就可以使用前面已经初始化好的IndexSearcher工具来 进行检索了。IndexSearcher提供了良好的检索接13,用户只需简单地将Query 对象传入,就可以得到一个返回结果。当然,这个过程看似简单,其中也有许多 值得思考的问题,如检索结果的排序、过滤等。 在搜索完成之后,就需要把搜索结果返回并显示给用户,只有这样才算是完 成了搜索的任务。在Lucene中搜索结果的集合是用Hits类的实例来进行表示的。 所有的search方法都返回一个类型为Hi协的对象。 Hits对象中主要有以下几个经常使用的方法。 lengthO:返回搜索到结果的总数量。
doc(int n):返回第n个文档。 id(int n):返回第n个文档的内部ID号。

score(n):返回第n个文档的得分。 其中,length()方法和doc(intn)方法共同使用,就可以遍历结果集中的所有 文档记录。不过有一点值得注意,如果一个结果集含有100000条记录,而Hits 对象一次性就把检索结果全部返回,那么这个Hi协对象的结果就会大不一样。 它并不是一次性将所有的结果返回,而是采取一种懒惰的方式来加载返回结果, 即当用户将要访问某个文档的时候,Hits对象在内部对Lucene的索引又进行了 一次检索,才将这个最新的结果返回给用户。 3.1.2评分机制 评分其实是搜索引擎中很重要的概念,通常情况下,当用户输入一个关键字, 搜索引擎接收到信息后即可开始进行搜索。对于检索到的结果,需要按一定的顺 序返回给用户。因此需要引入一种机制来对检索结果进行排序,以便更加合理的 将结果返回给用户BOl。 评分机制就是对检索结果按照某种标准进行评估,然后按分值的高低来对结 果进行排序。同时,对于一个商用的搜索引擎,评分机制是其收入来源的主要部 分,例如某公司向搜索引擎交纳一定的费用,该搜索引擎将其搜索结果中关于该 公司的信息部分权值加大,以便在返回结果给用户时让该公司获得更加靠前的位
1S

第3章Lucene的实现原理及相关技术

置,这种做法增加了用户浏览该公司网页和产品的机会,无形之中给该公司带来 了更大的社会影响和潜在的商机。因此,采用何种评分机制,从各方面来说都是
非常重要的。

Lucene的对各文档的得分是在用户进行检索时实时计算出来的,如果在建立 索引时就已经给每个文档的得分计算好,那么当用户输入任何关键字时,得分最 高的文档都会被排在返回结果的最前面,这显然不合理。因此所有文档的得分应 当都与用户输入的关键字有关系,而且是实时运算的结果。

芝:矿(f
t/n窖

in

d)+idf(t)4 boost(t.field

in

d)+lengthNorm(t.field

in

d)

通过这个评分公式得到的只是原始的得分,但由Hits对象返回的关于某一文 档的评分却不一定是其原始的得分。因为,评分最高的文档的得分如果超过了 1.0,那么接下来的所有评分都会以这个评分为标准进行计算,因此所有Hits对 象的得分都只能小于或等于1.0。

表3-4评分公式中的因子说明
Table3-4 Introduction ofthe
score

formula

因素
tf(t in d)

在公式中的作用描述

词条t在文档d中出现的次数,查询关键词出现的频
率越高,文档的得分就越高

idf(t)

词条t在文档中的倒排词频,.这个函数表示的是t在
所有文档中一共在多少个文档中出现过。因为文档出现 的次数越少就越容易定位,所以文档数越少,得分就越 高

boost(t.field

in

d)
in

在索引过程中设置的文字字段参数 d)

lengthNorm(t.field

字段的标准化值,表明在字段中存储了多少词条, 这个数值是在索引过程中计算出来的,并且也存
储在索引中

coord(q,d)

协调因子,它的计算是基于文档d中所包含的所 有可供查询的词条数量,查询词q在在文档d中
命中的个数越多,则该因子也就越大 这个函数是一个调节因子,不影响具体的排序情况。主
要是用来让排序结果在不同的查询条件之问可以比较

queryNorm(q)

在公式中加入加权因子(boost factor),可有效地对某个查询或某一域给评 分带来的影响施加控制。Lucene在索引时,显式地通过boost(t.field
in d)来设置

某个域的加权因子。该加权因子的默认值为1.0。在索引期间,也可以为Document 对象设置加权因子。它隐式地把该文档中所有域的初始加权因子都设置为指定

19

成都理工大学硕士学位论文

值。特定域的加权因子是初始加权因子的倍数,经过一定处理后才最终得出该域 加权因子的值。在索引过程中,有可能多次将同一域添加到同一个文档中,在这 种情况下,该域的加权因子就等于该域在这个文档的所有加权因子之和。 在这个公式中除了一些明确的因子外,其他一部分作为查询标准(queryNorm) 的因子可以在每次查询的基础上计算出来。Query对象本身对匹配文档的评分也 会产生一定的影响。加权处理某一Query对象仅在应用程序执行多重子旬的查询 时比较有效;如果只搜索单个项,加权处理该项相当于同时对所有匹配该项的文 档都进行了相同比例的加权。在多重子句的布尔查询中,一些文档可能只匹配其 中的一个子句,使用不同的加权因子可以用来区分不同的查询条件。Query对象
加权因子的值也默认为1.0。

在这个评分公式中,对绝大多数因子的控制都是通过Similarity实例来实现 的。如果不另外指定,在默认的情况下Lucene会用DefaultSimilarity来实现 Similarity类。此外,DefaultSimilarity类还负责处理评分中更多的计算过程,例 如,项频率(term丘equeney)因子就是实际频率的平方根。索引过程中改变加权 因子或使用了Similarity类的方法后,为了同时协调所有的相关因子,应用程序 需要对索引进行重建。 Lucene的搜索结果默认按相关度排序,这个相关度排序是基于内部的Score
和DoclD,Score又基于关键词的内部评分和做索引时的boost。默认Score高

的排前面,,如果Score一样,再按索引顺序,先索引的排前面。那么如果要先索 引的排后面,只要构造一个SortField[]就可以实现该功能 //评分降序,评分一样时后索引的排前面
new

SortField[]{SortField.FIELD

SCORE,flew

SortField(null,SortField.DOC,true)}

∥评分升序,评分一样时后索引的排前面,此为最不相关的排前面
new

SortField[]{new SortField(null,SortField.SCORE,true),new SortField(null,SortField.DOC,

true))

Lucene中的相似度排序主要是在org.apache.1ucene.search包下的Similarity 类中定义的,Similarity是一个抽象类,默认的相似度排序算法是在 DefaultSimilarity类中实现。除了内置的得分算法外,Lucene还提供了一种方法 来改变每个文档的得分。初始化Document后,使用了Document的setBoost方 法来改变一下文档的boost因子。这种做法的实际目的是将文档的得分乘以这个 因子,以这个新的数作为文档的得分。

第3章Lucene的实现原理及相关技术

3.1.3倒排索;

倒排文件就是把文档到词的关系倒排成词到文档的关系。倒排文件机制是一 种面向单词的索引机制,利用它可以提高网络检索速度。倒排文件结构由词汇和 出现情况两部分组成。对于每个单词,都有一个列表(称为词汇列表)来记录单词 在所有文本中出现的位置,这些位置可以是单词的位置(是文本中的第几个单词) 也可以是字符的位置(是文本中的第几个字符)。在倒排索引中,词汇表对空间的 需求相对较小。 倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每 ~项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定 属性值,而是由属性值来确定记录的位置,因而称为倒排索引。索引文件为了 使得以项为基础的搜索更加有效而储存有所有项的统计数字。Lueene的索引使 用的就是倒排索引的索引方式,这是因为,这种索引方式是从特定的关键字可以 列出所有包含它的文档,与通常方式的由文档列出所有关键字正好是反过来的。 Lucene是一个高性能的java全文检索工具包,它使用的是倒排文件索引结 构。该结构及相应的生成算法如下: 设有两篇文章1和2 文章1的内容为:RuifivesinBeOhag,IliveinBeringtoo.
文章2的内容为:I
once

lived in Shanghai.

1油于lucene是基于关键词索引和查询的,首先我们要取得这两篇文章的关
键词,通常我们需要如下处理措施

a.我们现在有的是文章内容,即一个字符串,我们先要找出字符串中的所有 单词,即分词。英文单词由于用空格分隔,比较好处理。中文单词间是连在一起 的需要特殊的分词处理。 b.文章中的“in'’,‘'once…'too”等词没有什么实际意义,中文中的“的“是”等 字通常也无具体含义,这些不代表概念的词可以过滤掉 c用户通常希望查“Hve'’时能把含“lives”,“lived'’的文章也找出来,所以需要 把“lives'’,“lived”还原成“livC’ d.文章中的标点符号通常不表示某种概念,也可以过滤掉 在lucene中以上措施由Analyzer类完成 经过上面处理后 文章1的所有关键词为:[Rui】【live]【Beijing]【live】【Bering] 文章2的所有关键词为:【I】[1ive】【shanghai】

2l

成都理T大学硕士学位论文

2)有了关键词后,我们就可以建立倒排索引了。上面的对应关系是:“文章 号”对“文章中所有关键词”。倒排索引把这个关系倒过来,变成:“关键词”对“拥 有该关键词的所有文章号”。文章1,2经过倒排后变成
关键词文章号 Beijing
i l.2 livel,2 shanghai 2 Rui 1 1

通常仅知道关键词在哪些文章中出现还不够,我们还需要知道关键词在文章 中出现次数和出现的位置,通常有两种位置: a)字符位置,即记录该词是文章中第几个字符。 b)关键词位置,即记录该词是文章中第几个关键词(优点是节约索引空间、 词组查询快),lucene中记录的就是这种位置。 加上“出现频率”和“出现位置”信息后,我们的索引结构变为: 关键词文章号【出现频率】出现位置
Beijing 1 12】3,6

i1【l】,2[1】4,1
live

112],211】2,5,2 211】3

shanghai Rui

1[1】1

以live这行为例我们说明一下该结构:live在文章1中出现了2次,那么“2,5” 就表示live在文章1中出现的两个位置,文章2中出现了一次,剩下的‘‘2”就表 示live是文章2中第2个关键字。 以上就是lueene索引结构中最核心的部分。我们注意到关键字是按字符顺 序排列的,因此lucene可以用二元搜索算法快速定位关键词。 实现时lucene将上面三列分别作为词典文件、频率文件、位置文件保存。 其中词典文件不仅保存有每个关键词,还保留了指向频率文件和位置文件的指 针,通过指针可以找到该关键字的频率信息和位置信息。 Lucene中使用了field的概念,用于表达信息所在位冕(如标题中,文章中, ud中),在建索引中,该field信息也记录在词典文件中,每个关键词都有一个 field信息(因为每个关键字一定属于一个或多个field)。 为了减小索引文件的大小,Lueene对索引还使用了压缩技术。首先,对词 典文件中的关键词进行了压缩,关键词压缩为<前缀长度,后缀>,例如:当前

第3章Lucene的实现原理及相关技术

词为“阿拉伯语”,上一个词为“阿拉伯”,那么“阿拉伯语”压缩为岛,语>。其次, 大量用到的是对数字的压缩,数字只保存与上一个值的差值(这样可以减小数字 的长度,进而减少保存该数字需要的字节数)。例如当前文章号是16389(不压 缩要用3个字节保存),上一文章号是16382,压缩后保存7(只用一个字节)。 下面我们可以通过对该索引的查询来解释一下为什么要建立索引。 假设要查询单词“live'’,lncene先对词典二元查找、找到该词,通过指向频 率文件的指针读出所有文章号,然后返回结果。词典通常非常小,因而,整个过 程的时间是毫秒级的。 如果用普通的顺序匹配算法,不建索引,而是对所有文章的内容进行字符串 匹配,这个过程将会相当缓慢,当文章数目很大时,时间往往是无法忍受的。 下面是倒排索引构造基本算法描述: 1.产初始化+,
Create an empty dictionary
structure S.

2.产搜集文档中的所有项?/
For each document

D1 In the collection,1≤i≤N,
it into index terms

1)Read口,parsing

2)For eachindextermt∈Dj,
i.Let

E.1

be the丘equency in



oft.

ii.Search S fort. iii.IftisnotinS.insertt
iv.Append 3.


node

storing<i,只.f>to

the list corresponding to term t.

严倒排文件得输出?/
word)

For each term 1≤t≤n fn is the number ofdistinct

(1)Start



new inverted file entry. list corresponding to t,append<i,E,l>to this

(2)For each<i,E.f>in the
inverted file entry.

(3)Ifrequired,compress the inverted (4)Append this inverted

file entry.

file entry to the inverted file.

3.2

Lucene的设计原理和特色
Lucene的API接口设计的比较通用,输入输出结构都很像数据库的表=>记

录_>字段,所以很多传统的应用的文件、数据库等都可以比较方便的映射到

成都理工大学硕士学位论文

Lucene的存储结构/接口中。总体上看:可以先把Lucene当成一个支持全文索弓 的数据库系统。比较一下Lucene和数据库:

表3-5 Lucene数据库和普通关系数据库结构的对比
Tab I e3-5 Contrast Lucene between I
ucene

DB and

common

DB

数据库 数据源:record(fieldl,field2…)record(fieldI..) 、SQL:insert/ IDB
Index

数据源:doe(fieldl,field2…)doc(fieldl,field2…]
、indexer/

Lucene

Indexl

/searcher、

/SQL:select、 结果:results(record(fieldl,field2。) record(fieldl…)) Record:记录,包含多个字段 Field:字段

结果:Hits(doc(fleldl,field2)doc(fieldl…)) Document:一个需要进行索引的“单元” 一个Document由多个字段组成 Field:字段

Hits:查询结果集,由匹配的Document组成 RecordSet:查询结果集,由多个Record组成

全文检索≠like”%keyword%”

通常比较厚的书籍后面常常附关键词索引表,它能够帮助读者比较快地找到 相关内容的页码。索引之所以效率高,另外一个原因是它是排好序的。对于检索 系统来说核心是一个排序问题。 由于数据库索引不是为全文索引设计的,因此,使用like”%keyword%”时, 数据库索引是不起作用的,在使用like查询时,搜索过程又变成类似于一页页翻 书的遍历过程了,所以对于含有模糊查询的数据库服务来说,LIKE对性能的危 害是极大的。如果是需要对多个关键词进行模糊匹配:like”%keywordl%”and
”%keyword2%”…其效率也就可想而知了。
like

所以建立一个高效检索系统的关键是建立一个类似于科技索引一样的 反向索引机制,将数据源排序按顺序存储的同时,有另外一个排好序的关键 词列表,用于存储关键词=>文章映射关系,利用这样的映射关系索引:【关 键词=>出现关键词的文章编号,出现次数(甚至包括位置:起始偏移量,结 束偏移量),出现频率1,检索过程就是把模糊查询变成多个可以利用索引的 精确查询的逻辑组合的过程。从而大大提高了多关键词查询的效率,所以, 全文检索问题归结到最后是一个排序问题。 由此可以看出模糊查询相对数据库的精确查询是一个非常不确定的问 题,这也是大部分数据库对全文检索支持有限的原因。Lucene最核心的特征

第3章Lucene的实现原理及相关技术

是通过特殊的索引结构实现了传统数据库不擅长的全文索引机制,并提供了 扩展接口,以方便针对不同应用的定制。 可以通过表格对比数据库的模糊查询:
表3-6 Lucene全文索引和普通数据库索引对比
TabIe3-6 Contrast between Iucefle fuI I jndex and common index

Lucene全文索引引擎 索引 将数据源中的数据都通过全文索 引一一建立反向索引

数据库 对于LIKE查询来说,数据传统的索引是根 本用不上的。数据需要逐个便利记录进行 GREP式的模糊匹配,比有索引的搜索速度 要有多个数量级的下降。

匹配 效果

通过词元(term)进行匹配。通过

使用:like’%net%’会把netherlands也 匹配出来。

语言分析接口的实现,可以实现
对中文等非英语的支持。

多关键词的模糊匹配,不能匹配词序颠倒的
没有匹配程度的控制:比如有记录中net 出现5词和出现1次的,结果是一样的。

匹配 度 结果 输出

有匹配度算法,将匹配程度(相
似度)比较高的结果排在前面。

通过特别的算法,将最匹配度最 高的头100条结果输出,结果集
是缓冲式的小批量读取的。 通过不同的语言分析接口实现, 可以方便的定制出符合应用需要 的索引规则(包括对中文的支持)

返同所有的结果集,在匹配条目非常多的时
候需要大量的内存存放这些临时结果集

可定 制性

没有接口或接口复杂。无法定制

结论

高负载的模糊查询应用,需要负

责的模糊查询的规则,索引的资
料量比较大

使用率低,模糊匹配规则简单或者需要模糊 查询的资料量少

全文检索和数据库应用最大的不同在于:让最相关的头100条结果满足98% 以上用户的需求 Lucene的创新之处: 大部分的搜索(数据库)引擎都是用B树结构来维护索引,索引的更新会 导致大量的IO操作,Lucene在实现中,对此稍微有所改进:不是维护一个索 引文件,而是在扩展索引的时候不断创建新的索引文件,然后定期的把这些 新的小索引文件合并到原先的大索引中,这样在不影响检索的效率的前提下, 提高了索引的效率12]。
表3—7
Table3-7

Lucene和其他全文检索系统创新对比:
Contrast
between Iucene and other search
system

Lucene

I其他开源全文检索系统

量索引和批量阿以进行增量的索引(Append),可以对于大量数据I很多系统只支持批量索
索引

隧行批量索引,并且接口设计用于优化批量索引和f引,数据源增加需要重

成都理一r大学硕十学位论文 小批量的增量索引。 建索引。

Lucene没有定义具体的数据源,而是一个文档的结 很多系统只针对网页, 数据源 构,因此可以非常灵活的适应各种应用(只要前端 缺乏其他格式文档的灵 有合适的转换器把数据源转换成相应结构) Lueene的文档是由多个字段组成的,甚至可以控制 那些字段需要进行索引,那些字段不需要索引,索 活性。

索引内容抓取 引的字段也分为需要分词和不需要分词的类型:
需要进行分词的索引,比如:标题,文章内容 不需要进行分词的索引,比如:作者/日期

缺乏通用性,往往将文 档整个索引了

通过语言分析器的不同扩展实现:可以过滤掉不需
要的词:an 语言分析
the

of等

西文语法分析:将jumps juraped jumper都归结成 jump进行索71/检索 非英文支持:对亚洲语言,阿拉伯语言的索引支持

缺乏通用接口实现

查询分析

通过查询分析接口实现,可以定制查询语法规则:

Lucene的另外一个特点是在收集结果的过程中将匹配度低的结果自动过滤 掉了。这也是和数据库应用需要将搜索的结果全部返回不同之处。

3.3增强用户体验的Ajax技术
Ajax是Asynchronous
JavaScript and

XML的简写。Ajax并不是一门新的语

言或技术,它实际上是几项技术按一定的方式组合在一起,并在共同的协作中发 挥各自的作用,它包括: 使用XHTML和CSS标准化呈现: 使用DOM实现动态显示和交互: 使用)【1ⅥL和xSLT进行数据交换与处理; 使用XMLHttpRequest进行异步数据读取; 最后用JavaScript绑定和处理所有数据; Ajax是基于服务器技术的不确定性,独立于服务器语言的一门技术。所有
的开发人员都能使用并且一起讨论相同的表现层。

Ajax的核心在于对Intemet默认的请求/响应模式进行了修改,修改后框架基 本的流程是:对象初始化专发送请求专服务器接收÷服务器返回专客户端 接收专修改客户端页面内容。只不过这个过程是异步的,中间加入了一个Ajax 中『自J层。Web应用开发人员现在可以自由的与服务器异步交互,这使得许多以 前原本只能在胖客户端上完成的任务很完美的表现在客户端了。比如在客户端能 够快速的验证表单输入的正确性。正是Ajax的提出消除了胖客户(或桌面)应
用与瘦客户(或Web)应用之间的界限。

第3章Lucene的实现原理及相关技术

由于AjaX的使用使得系统响应和页面加载更加流畅,使得web的工作性能 接近桌面客户端软件。Ajax使、№b中的界面与应用分离(也可以说是数据与呈 现分离),有利于分工合作、减少非技术人员对页面的修改造成的Web应用程 序错误、提高效率、也更加适用于现在的发布系统。也可以把以前的一些服务器 负担的工作转嫁到客户端,充分利用客户端闲置的处理能力来处理。 Ajax数据跨过线路而不是整个页面传输。这种数据交换是经由特定的浏览 器对象XMLHttpRcquest(XHR)实现的;再由适当的逻辑来处理每个数据请求的结 果,页面的某个特定区域而不是完整的页面被更新。从而达到更快的速度,更少 的拥挤和更好的信息传送控制。 使用XHR对象与服务器进行异步通信,这样就能创建更加动态的Web应用。 例如,假设有一个下拉列表,这个列表是根据另外一个域或下拉列表的输入来填 写的。正常情况下,必须在加载第一个页面时把所有数据都发送给客户,然后使 用JavaScript根据输入来填写下拉列表。这么做会让页面变得很臃肿,使下拉列 表不再“动态”,页面很可能膨胀得过大,达不到预期的效果。利用Ajax的话, 当作为触发源的域有变化,或者失去了输入焦点,就可以向服务器做一个简单的 请求,只要求得到更新下拉列表所需的部分信息。 在web应用中我们的最终目的是接收服务器的返回信息,修改当前文档的 内容。在客户端采用Aj8.X技术来更新文档,以及处理服务器返回的XML文档。 能够更加快捷方便的完成我们的文档更新。 文档对象模型(DOM)是表示文档(比如HTML和Ⅺv儿)和访问、操作 构成文档的各种元素的应用程序接121(API)。一般的,支持Javaseript的所有 浏览器都支持DOM。它是W3C定义的标准的文档对象模型,以树形结构表示 HTML和XML文档,定义了遍历这个树和检查、修改树的节点的方法和属性。 Web站点正在证明Aja)【的有效性、稳定性,并且使Web看起来更像是一个 桌面应用程序:即真正意义的web开发。Ajax特殊之处在于它可以使用验证过 的现有技术完成这~切。换句话说就是,任何标准浏览器r可以处理JavaScfipt 和DOM的浏览器)都可以正常工作。您不需要单独安装其他插件。 Ajax能够赢得广泛认可的原因是基于它要缩短Web应用程序和桌面应用程 序之间的差距。相对于微软整体推出胖客户的理念把很多网络上的应用搬到本地 运行时,基于本地化的用户体验成为了一个很重要的方向,我们的目标就是要让 用户更好的使用我们的产品。用户的支持就是我们的技术更新的动力。因此用户 体验是一个很重要的课题。没有用户就没有我们产品的推广,就不可能使我们计 算机广泛的推广应用。

成都理丁=大学硕士学位论文

3.4中文分词技术
英文是以词为单位,词和词之间是靠空格隔开,而中文是以字为单位,句子 中所有的字连起来才能描述一个意思。例如,英文句子I
am


student,用中文则

为:“我是一个学生”。计算机可以很简单通过空格知道student是一个单词,但 是不能很容易明白“学”、“生”两个字合起来才表示一个词。把中文的汉字序列切 分成有意义的词,就是中文分词,有些人也称为切词。我是一个学生,分词的结 果是:我是一个学生。 对于搜索引擎来说,最重要的并不是找到所有结果,因为在上百亿的网页中 找到所有结果没有太多的意义,没有人能看得完,最重要的是把最相关的结果排 在最前面,这也称为相关度排序。中文分词的准确度常常直接影响到对搜索结果 的相关度排序。中文分词技术属于自然语言处理技术范畴,对于一句话,人可以 通过自己的知识来明白哪些是词,哪些不是词,但如何让计算机也能理解,其处
理过程就是分词算法。

现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分
词方法和基于统计的分词方法。

1、基于字符串匹配的分词方法 这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一 个“充分大的”机器词典中的词条进行匹配,若在词典中找到某个字符串,则匹配 成功(识别出一个词)。按照扫描方向的不同,串匹配分词方法可以分为正向匹 配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最 小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和 分词与标注相结合的一体化方法。常用的几种机械分词方法如下: 1)正向最大匹配法(由左到右的方向); 2)逆向最大匹配法(由右到左的方向); 3)最少切分(使每一句中切出的词数最小)。 还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆 向最大匹配方法结合起来构成双向匹配法。由于汉语单字成词的特点,正向最小 匹配和逆向最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于正向 匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率 为1/169,单纯使用逆向最大匹配的错误率为l/245。但这种精度还远远不能满足 实际的需要。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通 过利用各种其它的语言信息来进一步提高切分的准确率。

第3章Lucene的实现原理及相关技术

一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符 串中识别和切分出一些带有明显特征的词,以这些词作为断点,可将原字符串分 为较小的串再来进行机械分词,从而减少匹配的错误率。另一种方法是将分词和 词类标注结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注过程 中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率。 对于机械分词方法,可以建立一个一般的模型,在这方面有专业的学术论 文,这里不做详细论述。 2、基于理解的分词方法 这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。 其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来 处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。 在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来 对分词歧义进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用 大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信 息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶
段。 3、基于统计的分词方法

从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的 次数越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好 的反映成词的可信度。可以对语料中相邻共现的各个字的组合的频度进行统计, 计算它们的互现信息。定义两个字的互现信息,计算两个汉字x、Y的相邻共现 概率。互现信息体现了汉字之间结合关系的紧密程度。当紧密程度高于某一个阈 值时,便可认为此字组可能构成了一个词。这种方法只需对语料中的字组频度进 行统计,不需要切分词典,因而又叫做无词典分词法或统计取词方法。但这种方 法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例 如“这一”、“之一”、“有的”、“我的”、“许多的”等,并且对常用词的识别精度差, 时空开销大。实际应用的统计分词系统都要使用一部基本的分词词典(常用词词 典)进行串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹 配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词 结合上下文识别生词、自动消除歧义的优点。 到底哪种分词算法的准确度更高,目前并无定论。对于任何一个成熟的分 词系统来说,不可能单独依靠某~种算法来实现,都需要综合不同的算法。 中文是一种十分复杂的语言,让计算机理解中文语言更是困难。在中文分 词过程中,有两大难题一直没有完全突破。

成都理工大学硕十学位论文

1、歧义识别

歧义是指同样的一句话,可能有两种或者更多的切分方法。例如:表面的,因为 “表面”和“面的”都是词,那么这个短语就可以分成“表面的”和“表面的”。这种 称为交叉歧义。由于没有人的知识去理解,计算机很难知道到底哪个方案正确。 交叉歧义相对组合歧义来说是还算比较容易处理,组合歧义就必需根据整 个句子来判断了。例如,在句子“这个门把手坏了”中,“把手”是个词,但在句子 “请把手拿开”中,“把手”就不是一个词;在句子“将军任命了一名中将”中,“中将” 是个词,但在句子“产量三年中将增长两倍”中,“中将”就不再是词。 如果交叉歧义和组合歧义计算机都能解决的话,在歧义中还有一个难题, 是真歧义。真歧义意思是给出一句话,由人去判断也不知道哪个应该是词,哪个 应该不是词。例如:“乒乓球拍卖完了”,可以切分成“乒乓球拍卖完了”、也 可切分成“乒乓球拍卖完了”,如果没有上下文其他的句子,恐怕谁也不知道 “拍卖”在这里算不算一个词。
2、新词识别

新词,专业术语称为未登录词。也就是那些在字典中都没有收录过,但又 确实能称为词的那些词。最典型的是人名,人可以很容易理解句子“王军虎去广 州了”中,“王军虎”是个词,因为是一个人的名字,但要是让计算机去识别就困 难了。如果把“王军虎”做为一个词收录到字典中去,全世界有那么多名字,而且 每时每刻都有新增的人名,收录这些人名本身就是一项巨大的工程。即使这项工 作可以完成,还是会存在问题, 新词中除了人名以外,还有机构名、地名、产品名、商标名、简称、省略 语等都是很难处理的问题,而且这些又正好是人们经常使用的词,因此对于搜索 引擎来说,分词系统中的新词识别十分重要。目前新词识别准确率已经成为评价 一个分词系统好坏的重要标志之一。
中文分词的应用

目前在自然语言处理技术中,中文处理技术比西文处理技术要落后很大一 段距离,许多西文的处理方法中文不能直接采用,就是因为中文必需有分词这道 工序。中文分词是其他中文信息处理的基础,搜索引擎只是中文分词的一个应用。 其他的比如机器翻译(MT)、语音合成、自动分类、自动摘要、自动校对等等, 都需要用到分词。因为中文需要分词,可能会影响一些研究,但同时也为一些企 业带来机会,因为国外的计算机处理技术要想进入中国市场,首先也是要解决中 文分词问题。在中文研究方面,相比外国人来说,中国人有十分明显的优势。 分词准确性对搜索引擎来说十分重要,但如果分词速度太慢,即使准确性 再高,对于搜索引擎来说也是不可用的,因为搜索引擎需要处理数以亿计的网页,

第3章Lucene的实现原理及相关技术

如果分词耗用的时间过长,会严重影响搜索引擎内容更新的速度。因此对于搜索 引擎来说,分词的准确性和速度,二者都需要达到很高的要求。 中文分词几种常用的方式:
A.单字分词

单字分词,顾名思义,就是按照中文一个字一个字地进行分词。以这样方式 切分出来的词再进入索引,称为字索引,但是这种方式随着索引的增大,相应索 引条目的内容会不断增大,严重影响效率。如:我们是中国人,效果:我\们\是\
中\国\人。 B.二分法

二分法,就是无论什么词都按两个字进行切分,不考虑词义。如:我们是中 国人,效果:我们\{『]是\是中\中国\国人。 C.词库分词 词库分词是用一个已经建立好的词的集合(按照某种算法)去匹配目标,当 遇上集合中已经存在的词时,就将它切分出来。通常词库分词被认为是最理想的 中文分词算法。如:我们是中国人,通成效果为:我们\是\中国、中国人。 对于词库分词方式,词库的建立是关键,它需要统计大量的内容,然后根据 各种词出现的频率、概率再来进行筛选,最终决定什么词应当放进词库。还有一 些高级的词库加入了语义和词性的标注,甚至还有不同词的权重,使用这样的词 库进行分词的效果应该很是理想的。 基于自动切分的最大优点是没有词表维护成本,实现简单,缺点是索引 效率低,但对于中小型应用来说,基于二元语法的切分还是够用的。基于二 元切分后的索引一般大小和源文件差不多,而对于英文,索引文件一般只有 原文件的30%40%不同。
表3-8自动切分和词表切分比较
Table3-8 Contrast between auto partiCiDIe and l ist partjCjP Je

自动切分 实现 查询 存储效率 维护成本

词表切分 实现复杂 适于实现比较复杂的查询语法规则

实现非常简单
增加了查询分析的复杂度

索引冗余大,几乎和原文一样大 索引效率高,为原文大小的30%左右 无词表维护成本 嵌入式系统:运行环境资源有限 词表维护成本非常高:中日韩等语言需要 分别维护。还需要包括词频统计等内容

适用领域

分布式系统:无词表同步问题 多语言环境:无词表维护成本

对查询和存储效率要求高的专业搜索引擎

目前比较大的搜索引擎的语言分析算法一般是以上两种方法的结合。

成都理I:大学硕士学位论文

第4章主题搜索引擎的实现
4.1

Nutch的结构设计和特点
Lucene是一个提供全文文本搜索的函数库,它不是一个应用软件。它提供

的很多API函数可以运用到各种实际应用程序中。 Nutch是一个建立在Lucene核心之上的Web搜索的实现,它在Lueene的基 础上添加了网络爬虫和一些和web相关的应用包。其目的就是想从一个简单的 站内索引和搜索推广到全球网络的搜索上,就像Google和Yahoo一样。具有很 好的扩展功能,为用户进行二次开发提供了良好的框架。 Nutch是基于Lueene的。Lueene为Nuteh提供了文本索引和搜索的API。 总体上Nutch可以分为2个部分:抓取部分和搜索部分。抓取程序抓取页面并把 抓取回来的数据做成反向索引,搜索程序则对反向索引搜索回答用户的请求。抓 取程序和搜索程序的接口是索引。两者都使用索引中的字段。 实际上搜索程序和抓取程序可以分别位于不同的机器上。 抓取程序是被Nuteh的抓取工具驱动的。这是一组工具,用来建立和维护几
个不同的数据结构:web database,a 到的3个不同的数据结构。
The web
set

ofsegments,index。下面逐个解释上面提

database(WebDB)。是一个特殊存储数据结构,用来映像被抓取

网站数据的结构和属性的集合。WebDB用来存储从抓取开始(包括重新抓取) 的所有网站结构数据和属性。WebDB只是被抓取程序使用,搜索程序并不使用 它。WebDB存储2种实体:页面和链接。页面表示网络上的一个网页,这个 网页的Ud作为标示被索引,同时建立一个对网页内容的MD5哈希签名。跟网 页相关的其它内容也被存储,包括:页面中的链接数量(外链接),页面抓取信 息(在页面被重复抓取的情况下),还有表示页面级别的分数score。链接表示 从一个网页的链接到其它网页的链接。因此WebDB可以说是一个网络图,节点 是页面,链接是边。 Segment是网页的集合,并且它被索引。Segment的Fetchlist是抓取程序 使用的url列表,它是从WebDB中生成的。Fetcher的输出数据是从fetchlist中 抓取的网页。Feteher的输出数据先被反向索引,然后索引后的结果被存储在
segment中。Segment的生命周期是有限制的,当下一轮抓取开始后它就没有用

了。默认的重新抓取间隔是30天。因此删除超过这个时间期限的segment是可 以的。而且也可以节省不少磁盘空间。Segment的命名是日期加时间,因此很直
32

第4章主题搜索引擎的实现

观的可以看出他们的存活周期。 索引库是反向索引所有系统中被抓取的页面,他并不直接从页面反向索引产 生,它是合并很多小的segment的索引中产生的。Nutch使用Lucene来建立索 引,因此所有Lucene相关的工具API都用来建立索引库。需要说明的是Lucene

的segment的概念和Nutch的segment概念是完全不同的,不要混淆哦。简单来 说Lucene的segment是Lucene索引库的一部分,而Nutch的Segment是
WebDB中被抓取和索引的一部分。 Nutch是一个可以构造大型分布式的搜索引擎。Nutch的核心部分目前已经 被重新用分布式的处理模型Map Reduce实现了。并且Nutch也吸引了很多研究 者,他们非常乐于尝试新的搜索算法,因为对Nutch来说,这是非常容易实现 扩展的。Nutch是非常灵活的,扩展性好,它可以很好的被客户订制并集成到应 用程序中,使用Nutch的插件机制,Nutch可以作为一个搜索不同信息载体的 搜索平台。当然,最简单的就是集成Nutch到自己的站点,为用户提供搜索服务。 Nutch提供了一个高效、开源、易操作的搜索引擎,内部有许多细微之处都是值 得借鉴的,例如采用了hadoop的分布式文件系统,类似eclipse的插件技术。当 然,为了让搜索引擎能够处理数以亿计的网页,以上的模块都应该是分布式的。 也就是说,可以在多台机器上并行运行。Nutch的结构图设计(如图4.1)

回国叵三习 因固叵司
团园回固
Hadoop 图4—1
F i g.4-1

Nutch结构图
Nutch

Structure of

Nutch是一个开源Java实现的搜索引擎。它提供了我们运行自己的搜索弓

成都理_下大学硕+学位论文

擎所需的全部工具。Nutch是开放源代码的,因此任何人都可以查看他的排序算 法是如何工作的。商业的搜索引擎排序算法都是保密的,我们无法知道搜索出来 的排序结果是如何算出来的。更进一步,一些搜索引擎允许竞价排名,比如百度, 这样的索引结果并不是和站点内容相关的。因此Nutch对学术搜索和政府类站 点的搜索来说,是个好选择。因为一个公平的排序结果是非常重要的。

4.2主题搜索引擎的主题词库
Nutch有出色的架构实现,对于开发插件非常容易。主题搜索爬行的对象不 一样,它只针对某些固定的网站,在评分过程中,针对该主题建立一个词库,把 与词库中相关性大的查询词句加大权因子。在主题搜索中我们依旧要求更好的用 户体验,Ajax技术帮助我们实现这个目标.提供更好的搜索界面。 4.2.1构造主题词库 主题词是表达和描述文件、资料等主题内容并用于标引和检索的规范化语 词。它和自然语言中的词是有区别的,是专门为文件、资料等的标引和检索而设 计的一种标准化词汇。主题词是从自然语言的主要词汇中选出的标准化词汇,并 且能反映文本的主题内容,它必定包含一定的分类意义。所以,分类词库中的词也
可以从主题词库中产生。

主题词标引是指抽取信息中能够表达其核心内容的词或词组.并将这些词或 词组转化为受控词的过程。这里所指的主题词是某一特定专业检索和标引用的规 范词。具体思路是利用汉语自动分词的研究成果,采用词典分词法将文献进行切 分,通过词加权或词频统计法对切分后的词进行排序确定关键词,利用主题词表将 关键词转化、合并、去重、重新排序后确定系统正式使用的主题词.并追加文献 代号送入系统主题词字段中。在实现过程中,为了继续发扬关键词标引过程中能 够及时反映新出现的专业术语,及时更新词表,把原文献给出的关键词一并加入 到切分后的词汇集中,进行合并、去重、加权、排序后确定为关键词。 主题词标引的目的是提高查全率和查准率,减轻用户构造索引的负担,缩短 检索时间,便于扩检和缩检。 普通叙词表属于先控词表,而把若干词或词的片断构造成一个检索策略,则 属于一种后控过程。可借用后控制词表来改善关键词检索性能。 具体地,后控制技术是指检索系统在标引阶段使用自然语言,不对标引进行 严格控制,而在检索阶段才对检索词进行控制的一种自然语言检索优化技术。

第4章主题搜索引擎的实现

后控制词表的性质类似于入口词表,它是~种转换工具,~种扩检工具,一 种罗列自然语言检索标识供选择的工具。后控制词表是利用先控语言的原理和方 法编制的自然语言检索用词表,它主要是对自然语言中大量存在的等同关系、等 级关系和一部分相关关系进行控制和提示,具有自学习功能,可根据检索的需要 将新概念和新术语及时地加入词表中,是一个动态词表。用户通过浏览词表选用 检索词,或者系统自动执行查询调整(主要是扩检)既减轻了用户负担,又提高了 系统的易用性和检索效率。后控制词表是“自然语言检索和人工受控语言结合的 最佳范例”。 后控制词表系统是信息检索的核心,也是提高检索效率的关键。 国外有关 词表编制及词表在网络化应用方面的研究与实践已经取得了长足的发展。一方 面,已经开发出了多种词表编制与维护软件。在此基础上,充分结合网络技术, 使词表向着网络化和提供网络检索应用接口的方向发展。另~方面,把机读或 网络化词表嵌入网络检索工具中或者作为检索系统的一个可调用接口,为用户检 索策略的构造提供提示和导航,这样就提高了网络检索效率,真正体现了词表在 网络检索中的应用价值。国外开发了一系列实用性的网络化词表和后控检索支持 下的网络信息检索系统【引。 4.2.2结合主题词库改进搜索结果 在nutch中提供了插件机制和各种可以修改的影响评分因子。通过自己建立 的主题词表,使得相应主题的关键词能够获得更高的得分,返回结果更加接近用
户的需求。

评分公式中一些因子,它们使基于同一查询的某些文档的评分高于其他的文 档。如果确实想知道这些因子是如何计算出来的,Lucene提供了一个称为 Explanation的类来满足这个需要。IndexSearcher中有一个explain方法,调用该 方法需要提供一个Query对象和一个文档ID作为参数,且该方法会返回一个 Explanation对象。Explanation对象的内部包含了所有关于评分计算中各个因子 的细节信息。如果需要的话,虽然可以对每个因子的细节进行访问,但是通常全 部输出这些解释还是有必要的。toStringO方法可以将Explanation对象很好地以 文本格式输出来。通过Explanation对象可以方便地看到评分计算的内部工作原 理,但是它需要的开销和做查询操作是一样的,因此,不要过多地使用Explanation
对象。

对于一般的搜索要求我们可以使用lucene默认的评分类DefaultSimilarity, 但是在主题应用中,需要定制相应的Similarity来服务主题的应用需求。修改 Similarity需要同时对索引和搜索都进行修改,必须在搜索或者排序之间修改

成都理丁大学硕士学位论文

Similarity。

要定制特定主题的Similarity,只要在建立索引之前调用

lndexWriter.setSimilarity,或者在搜索之前调用Searcher.setSimilarity。 在Lucene中,修改评分系统将比修改similarity能更大程度的影响结果。 Lucene的评分系统是一个非常复杂的机制,主要由下面三个类来实现:
Weight,Scorer. Query,

从某种意义上来说,Query是评分开始的地方。没有查询就没有什么可以评 分的。更重要的是它是其他的评分系统的催化剂,由它来生成其他的评分系统, 然后将他们整合起来。Query有一些重要的方法需要被继承::
createWeight(Searcher searcher)每个查询都要提供一个实现好的权重对象。

Weight权重接口主要用来定义Query的一个代表实现接口,所以可以被重 用。任何可以用来被搜索的类都应该内置一个Weight,而不是在Query类。这 个接口定义了6个要被执行的方法。 Scorer是评分的抽象类,提供一些基本的计分功能供所有的评分类实现,是 Lucene评分机制的核心类。Scorer定义了一下的方法,必须被实现。 Documentboost一文档的boost,是建索引的时候设是的文档得分对相关 主题词的文档给较高的分数。 在索引过程中根据考虑所收录的文档重要性来预先设置一个文档的级别 (Rank),对某个域进行加权处理,可通过doc.setBoost(float)来设置文档级别。 当然相应的如果认为某一主题Field级别高于另外的field,那么也可以通过 field.setBoost(float)来实现目标。

4.3快速构建相关主题搜索引擎
4.3.1

Nutch使用的准备工作 (1)首先安装idI【和tomcat并且配置环境变量

设置JDK的安装路径JAVA_HOME=D:XProgram FilesUava\jdkl.5.o_08

设置TOMCAT的安装路径TOMCAT HOME=D:Wrogram
Group'Tomcat 4.1
Set Set

FileskApache

path---%JAVA_HOME%\bin:%JAVA HOME%\jre\bin

classpath=%JAVA_HOME%klib;%JAVA—HOME%\tools.jar

(2)由于运行Nuteh自带的脚本命令需要Linux的环境,所以我们可以借 助Cygwin来模拟这种环境。需要把\eygwin\bin目录加入path环境变量中。
在Windows系统的环境变量设置中,增加变量NUTCH-JAVA_HOME=%
JAVA

HOME%。安装好eygwin后,双击桌面图标进入类似DOS的窗口,进入

第4章主题搜索引擎的实现

安装nutch的目录
cd/cygdrive/d/nuteh一0.8.1

执行命令bin/nuteh
安装成功。

(3)把下载的nutch安装文件nuteh-O.8.1.tar.gz解压到本地,在Nutch的 安装目录(DAnuteh.0.8.1)中建立一个文件夹,名称为urls,然后在uds中建立一

个名为谢.o(t的文本文件,文件中写入要抓取网站的顶级网址,即要抓取的起
始页。比如在此文件中写入如下内容:
http://www.godeyes.cn/

(4)编辑eonffcrawl.urlfilter.txt文件,修改MY.DOMAIN.NAME部分:
捍accept hosts in MY.DOMAIN.NAME

—。htcp://www.godeyes.en/

(5)编辑eonf/nutch-default.xral文件,修改http.agent.name部分为:
<property>

<name>http.agent.name</name> <value>NutchlCT</value> <description>HTTP。User-Agent'request header.MUST NOT be empty
please set this to a single word uniquely related to your organization. NOTE:You should also check other related properties: hap.robots.agents http.agent.description http.agent.url

http.agent.email http.agent.version
and set their values appropriately. </deseription> </property>

4.3.2主题网站索引库内容的建立 Nuteh的爬虫抓取网页有两种方式,一种方式是lnlranet Crawling,针对的是 企业内部网或少量网站,使用的是crawl命令;另一种方式是Whole.webcrawling, 针对的是整个互联网,使用iIlject、generate、fetch和updatedb等更底层的命令。 启动cygWin\bin下的bash命令,在命令行窗I=I中输入:
ed/cygdrive/d/nutch-0.8.1

需根据安装路径改变一下进入当前放置nutch文件的目录下面嘲。
然后再输入:
birdnutch crawl urls—dir crawledGis—depth 3?threads 3>&crawl.109

成都理[大学硕士学位论文

图4-2安装调试信息
Fig 4-2 F;x debugs nformation

等待大约2分多钟后,程序运行结束。会发现在nutch-0.8.1目录下被创建了 一个名为erawledGis的文件央,同时还生成一个名为crawl.109的日志文件。利
用这一日志文件,我们可以分析可能遇到的任何错误。另外,在上述命令的参数
中:

dir指定抓取内容所存放的目录 depth表示以要抓取闷站顶级网址为起点的爬行深度
threads指定并发的线程数

在网页抓取过程中生成的文件如下图4.3所示 曰囝#?-l?罄i戮 嗣国crawl d.b 嗣口ir,daacos 田口linkdb


o咄

Cj‘?一?nb

国盛200704290053157 lil豳20070428005437
簟li
20070428005510

围4-3生成文件组成信息
Fig,4-3 Create fi Ies i nfo

r旧tion

4.3。3数据管理器工具的编写测试 由于lucene采用了自己的数据格式,抓取数据后的保存格式,无法被直接 浏览和管理,不像我们在操作普通关系型数据库时可以通过数据库提供商提供的 开发工具可视化的观察分析数据.因为那些大型的数据库都有一个大型的研发团 队,为使用者提供的服务极为方便,而我们在使用iava语言的项目研发中涌现 出很多优秀的开源项目,这些开源的项目都是由我们开发者在不断的完善中,没 有什么配套的第三方工具可以很方便的使用.所以我们需要在自己的研究过程中

第4章主题搜索引擎的实现

编写一些第三方辅助工具来为我们的研发提供方便和标准。 Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口 工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing 开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创 建优雅的用户界面。Swing组件集是JFC提供的一套新的GUI工具,它简化了 基于图形界面的窗口系统的开发。Swing组件是所谓的轻量型组件,开发人员可 以方便的选择自己的需要的GUI风格:本地的显示风格、统一的{ava显示风格 或用户定制的风格。Swing有更多的灵活性和更强大的功能。 由于lueene的数据格式我们是不可以直接观察分析的,可以用iava自己编写 一个可视化的数据管理工具,通过借助Swing的可视化组件来编写,利用简易的 可视化程序来把lueene数据格式转化为可直接观察的数据,并且分析查询相关 数据。为此编写了DBManagerForNutch这个数据管理器工具,该工具提供了数 据格式的可视化以及查询功能,对索引中的各个文件夹下的数据都可以导入进来 分析,其初始化界面如(图4.4)所示:

图4-4 DBManager For Nuteh初始界面
Fig.4-4 Initial interface ofthe

DBManager For Nuteh

结合上面抓取的索引信息,在这几个数据目录中erawldb。linkdb是WebLink 目录,存放ud及urls的相互关系,作为爬行和重新爬行的依据。 Crawldb是所有需要抓取的超连接信息,读取内容如(图4.5):

成都理‘T大学硕+学位论文

p口NulchCrawl

卜凸翁aw国
卜0
LmkDB

;rip f/bbs godeyes nH口/fbbs htlp



1 f 1 1 1 1

28;04;20

0 0 0 0 0 0

30 0 300 30 0 30 0 30 0 30 0 30 0
30 0

0 0021 79

01f01门970

godeyes c

2∞4/20
28;04/20 28;04;20 28;04;20 28;04120 28105;20 28/05f20

0 0021 79 0 0021 78 0 0021 78 3 22061 2 5 434782 0 004658


0I/0ILl870 01f01门970 01f01门970 01f01门970 01f01』1 970 01f01』1 970 01f01门970

}口Segments r凸co№rII L D CrawiFeich:

f/bbs godeyes c

godeyes c hn0 fidownload god
Nip//download god http;;download

lttp f/bbs

}_In

ParseData

god

2 2

o凸ParseTe“{

h协;/download god

004668

图4-5
Fig,4-5

信息
Information of CrawIDB

Linkdb中存放的是所有超连接及其每个连接的连入地址和锚文本。读取出来 的信息如下(图4.6):
}叠



o’”一
hrip Hbbs },rip HbbS hrip Hbb0

、试
godeyeE crl,An

”4

’、
Ooogle
rlce as a5 as a5 a5 as as aS as a5

。h'dink一””黪。§潮
Earth中文势据库支丁支持NET
3 07

rlo LInce/Ar,nourlce a5

godeyeE Ln;AnlloUflcelannou

便用'3E中文数据厍提矛netframewo rk出错

godeyes cn/Anr,o LIltceSAnnourice godeves cn/AnNounceJAnnounce

寻找战友t一解秉封oE中文教据库雨壬亨∞Ⅱ瓦t'

t,rip肋b5

l,tipⅣbbs goaeveS LrdArlhouriCefArlnounce iiripⅣbb5 godeve5【rdAnnoufile,Announce hrip I/lObs godeyes c rdAnnounceSAnnounce http/fObS hn0 l?ObS ittp flbbS 1nn fSbbS

一=0E中立剪据库纠描营帖t 中奠势据库台趟密么?
雌荐悟l圈雾地标中圈干省市县慷洋细地…l
I丘期网左笋于中文数据库的建议帖台集‘唐负 __
山幕穿阿详}日地标

900eyes godeyeS£rdAnnOunceIAnnounce


rdAnnOur,ce/Announce

Godeyes中芟筘冕库羌i去启瓤—蕴孽后百动jf一

godeye¥c

rdAnnounce/Announce

godeyes£r#Announce/Announce

我是鼬杀的新手什么私下僵我想下千中安数磊=== 部妇皇帝诅辖听莅地地标

一 ~~

图4-6 LinkDB信息
Fig.4—6 Information of LinkDB

Segments是每轮抓取的时候根据crawldb生成的,存放抓回来的网页。存放 的信息包括6种content、crawl
fetch、crawl generate、crawl parse、parse

parse_text。其中content是抓取下来的网页内容;crawl_generate最初生成; crawl—fetch、content在抓取时生成;crawl_parse、parse_data、parse_text在解析 抓取的数据文件时生成。其中crawl
generate、crawl

fetch和craw]Uarse是crawldb

的部分url数据,它们格式一样,不同的是抓取时间、状态、签名等有所变化。 nutch以广度优先的原则来爬行,因此每爬完一轮就会生成一个segment目录.上面 设置的深度为3,所以生成3个以日期命名的文件夹。 抓取网页时生成的crawl fetch包含的信息如下:
}口
一 '

}篙糕 瓣糕 狲npm岫~w
lhilpӬv^v

5 7 7 5 5

2目04;20 28104/20 28S04t20

0 0 0

30 0 30 0 30 0 30 0 30 0





0’,01,I 9i0 08



0 021 7391 3 0 021 7391 3 0 021 7391 3 0 021 7391 3 0 04347826 0 021 7391 3

01,01,1 970 08 0 0’,01,1 970 08 0 0'101,1 970 08 0 0,,01,1 970 08 0 0’,01,1 970 08 0 0’,01,1 970 0e 0

28104f20 28;04/20 28104t20 28;04,20







O 0

30 0
30 0

l}lnp mM~w

图4-7 CrawlFetch信息
Fig.4-7 Information of

40

第4章主题搜索引擎的实现

解析抓取的数据文件分析过后生成网页文本内容如下:
t u— j
IS


耙虹



hnp”“w
r临m¨w

godeyes Crdbollom



J撕Sr.rlplD0curnentdocumentwrite('。<tabI

godeyes cr#browser asp godeyes on/CONU¥hIm asp

口卜L0

hltp『^vⅥ^v

hitp"H蝴godeyes on/download http"ww godeyes cn/ge asp

h坤mw

鼬薛漫游区—一上帚Z骣首页I Google Earth 上帝Z眼鞋茅我们 Google Ea rthf,^/odd V讪ndJ苴他Earth赣件下戴 Google Eanh歇悻专题 上帝:二霉googleea

godmfes cⅣlmg厅78 swf

CWS}0嵫;翟P嗟罨口”懂口糟冒Kpo¥

h扣,^¨v宵godeyes crd(ndeyasp h11pⅣ■w_godeyes crdmap asp

上帝之呼蛰1、角度看世界钟钠ygodeves

cn0

缒图舞援曹夏I Google Eadh专题l NASAW0r

围4-8
Fig.4-8 Information of

信息
ParseText

DBManager For

Nutch这个工具实现的就是把非直观的数据可视化给使用

者,相当于一个格式的转化,当前实现的功能比较简单,在以后的开发过程中会 逐渐的根据需求更加的完善该第三方工具。 4.3.4使用Tomcat服务器进行搜索测试 (1)将tomcat\webapps下的ROOT文件夹名改成ROOTl; (2)将nutch-O.8.1目录的nutch-O.8.1.Will'用winrar解压到tomcat\webapps下,
并将其改名为ROOT;

(3)打开R001、wEB删F\classes下的nutch-site.xml文件,修改成如下形式:
<?xml version=”1.0”?>
<?Ⅺ111.stylesheet type=”text/xsl”href=-”configuration.xsl”?> <『--Put site-specific property overrides in this file.一> <configuration> <property>

<name>searcher.dir</name>
<value>D:Inutch一0.8.1/erawledGis</value>

</prope啊>

</configuration>
其中的“<value>D:/nuteh.0.8.1/crawledGis</value>”部分应根据自己的设置进 行相应修改。该目录是指明需要查询的服务器索引文件的位置。如果不指明索引 目录就会查询不到结果,如(图4.9)是Tomcat中打印的信息。
2887—84—28 81:06:17,164 IHFO INF0 NutchBean—quel-y t'equest flPom 127.9.0.1

2887—日4—28龃:86:17,174
2887一日哇一2叠日l:86:17,174 2807—84—28日1:86:17,194 2887-84-28日l:B6:17.t94

NutchBean—qttel"9;上常
NlutchBean—lano=zh NutchBean一¥earching HutchBean—total for 2B

INFO
INFO INFO

Mv

hits

hits:B

图4—9查询过程信息
Fig.4-9^I I the information in searoh

返回结果(total hits)始终为0。

(4)打开ROOT\WEB—INF\classes下的nutch.default.xml文件,修改
41

成都理丁大学硕+学位论文

http.agent.name成如下形式:

<prope啊>
<name>http.agent.name</name>
<value>NutchlCT</value>

<description>HTTP'User-Agent。request header.MUST NOT be empty
please set this to a single word uniquely related to your organization. NOTE:You should also check other related properties: http.robots.agents http.agent.description http.agent.url

http.agent.email http.agent.version
and set their values appropriately. </deseription>

</property>

(5)启动Tomcat,打开浏览器在地址栏中输入:http://localhost:8080

图4-10 nutch查询界面
F i g.4—10 Search i nterfaee of nutch

Nutch的安装分为3个层次:基于本地文件系统,基于局域网,或者基于 intemet。不同的安装方式具有不同的特色。比如:索引一个本地文件系统相对 于其他两个来说肯定是要稳定多了,因为没有网络错误,也没有缓存文件的拷贝。 基于Interact的搜索又是另一个极端:抓取数以千计的网页有很多技术问题需要
解决。

因为使用Nutch可以很快速的帮助我们构建自己的搜索引擎,尤其在使用局 域网或者在自己的网站开发一个内部搜索引擎。而且Nutch的算法公开,不会像 某些网站提供的搜索智能查询到特定的某些网页。在测试nuteh的应用性能时, 对此作出一番比较。 在使用爬虫对Godeyes.cn做数据爬行,采用深度为3,线程数为3进行爬行 建立索引库。并对本地的索引库查询,发现使用Godeyes只能查询到部分信息, 而Nutch返回信息数目更多。它的评分算法是按照关键词出现频率大小和文档本 身的分值有关。比如说查询关键词“GPS”,Godeyes返回8条信息。

第4章主题搜索引擎的实现

图4-”查询关键字“GPS”结果比较图
Fig.4-11 Contrast chart of search GPS

而用nutch查询GPS可以搜索到13条结果 在长句查询时,G0deyes效果相当差,而Nutch可以收到一定的效用 比如查询关键词:“可以支持不同的GPS软件”,Nutch可以搜索到部分相关信
息.

匦巫受獭蛭匮熏两二二二二二二]圈唑
第l-颂(事}有2项查询结果):

垒12d!冀磐煎凸翌!照垂塑塾堂甚塑皂至逊翌:挂工望I虫,)二二上置Z量 …了圣诞之前.不过比较可’睹的是我们并投…问跟进这个…
J/v,nT,rv,1 godeyes

cPJdownload

a¥p

a图厦‘废卫虱)吐臼趟兰攫D(童堑址£0

Q19越!至g!熊里壁

…版本定为Frcc软件.可以不限时间地自…对Pro感并趣的… h“P/,mw即d。yc;‘tu'ge flew础p(围叵怯职)岛隆过至白勤(墼幽全国
图4-12 Nutch长句查询结果
Fig.4-12 Search resuIt of Iong sentence in nutch

而Godeyes内部查询却不能查询到信息

}搜索关键字一可以支持不同的GPs软件
;没有记录j
图4-1 3 Godeyes长旬查询结果
Fig.4-12 Search resuIt of tong
sentence

in Godeyes

基于以上比较可知在nutch快速建立自己的搜索引擎,并且优化的基础上, 可以很好的应用在企业内网或本地搜索上。而且hutch的评分规则透明,对用户 而言很公正。

43

成都理工大学硕士学位论文

4.4对中文分词的处理
4.4.1计算所汉语词法分析系统l
CTCLAS

词是最小的能够独立活动的有意义的语言成分,但汉语是以字为基本的书 写单位,词语之间没有明显的区分标记,因此,中文词法分析是中文信息处理的 基础与关键。所谓分词,就是指把一个完整的句子划分为一个个词条(Token) 的过程。这种词条应当满足某种语言规则,以便宇为其建立索引。只有通过这样 的方式才能完成对一种语言的分析和检索。为此,中国科学院计算技术研究所在 多年研究基础上,耗时一年研制出了基于多层隐马模型的汉语词法分析系统
ICTCLAS(Institute ofComputing
Technology.Chinese Lexieal Analysis

System),该

系统主要功能包括中文分词;词性标注;命名实体识别;新词识别;同时支持用
户词典。分词正确率高达97.58%,基于角色标注的未登录词识别能取得高于90%

召回率,其中中国人名的识别召回率接近98%,分词和词性标注处理速度为
543.5KB/s[22]。

在获取计算所返回的注册码后可以进行有效测试。并且利用计算所提供的 ICTCLAS3.0动态链接库和词典文件进行二次开发。
4.4.2编写新的AnaIyzer

Nutch分词的最底层使用的是Lucene的Analyzer抽象类,它位于analysis 包中,NutchAnalyzer继承了Analyzer类、实现了Configurable、Pluggable接口.。 抽象类中定义了一个公有的抽象方法tokenStream(String
fieldName,Reader reader)

返回的类型是TokenStream。该方法是用于分析文本,其后的具体类中在这个方 法中实现了从文本中提取索引词组的策略、算法。而返回的TokenS仃eam类是即 可以从文本或者从查询词组中枚举token序列的抽象类,在Lueene中继承了它 的具体类有Tokenizer、TokenFilter。 NutchAnalyzer类是Nutch中扩展分析文本的扩展点,所有用于解析文本的插 件都得实现这个扩展点。对于Analyzer一个典型的扩展就是首先建立一个 Tokenizer,它是用于将Reader中读入的Stream分解成最原始的Token,在 Tokenzier分解Stream之后,一个或多个TokenFilter会用于过滤这些词组中无意
义的词组。

NutchDocumentAnalyzer类继承了NutchAnalyzer,其中有三个静态私有内部 类ContentAnalyzer、AnchorFilter、AnchorAnalyzer它们分别继承了Analyzer、
TokenFilter、Analyzer。在ContentAnalyzer中调用了CommonGrams类,该类构

第4章主题搜索引擎的实现

建了一个n-grams的分词方案,因为需要在索引中考虑词组的出现频率,并且实 现了对n-grams方案词组查询的优化措施。在n-grams方案中单个的词组同样会 被该方案索引,索引期间大量使用了Token的各种方法,并且还会调用 nutch/conf/nutch—default.xml中analysis.COlnrflon.terms.file的配置属性,其上各个
类与接口的UML图如下:

图4-14分析器类与接口的堋L图
Fig.4—14 UilL chart in ariafyzer classes and i rrterface

Lucene本身的StandardAnalyzer提供了中文分词接口,不过其采用的为 1-gram,默认的切分规则是按一个个汉字分的。这种分词方法虽然不会损失任 何索引信息,但是造成的索引垃圾太多,用户得到的查询结果中垃圾也是很多. 如果要更好的分词,编写自己的Analyzer,只要把他们包装成Lucene的 TokcnStream就可以了。再利用已有的词典,然后根据正向最大匹配法或者逆向最 大匹配法写了一个分词方法,并且应用在Lucene中。 MyChineseAnlyzer在中文分词方面使用JNI调用ICTCLAS的java接口.所 以其在中文方面性能上与ICTCLAS相同。其在英文分词上采用了Lucene的 StopAnalyzer,可以去除stopWords,而且可以不区分大小写,过滤掉各类标点符号. 完全兼容Lucene的底层分词格式。
public final class MyChineseAnlyzer extends p而vate Set stopWords;

Analyzer{

/,可以在此扩展需要去除的FILTER STOP WORDS public static final String[】FILTER—STOP—WORDS={
”a”,”all”,”and”,”are”,”as”,”at”,”be”,”but”,”by”,”我”,”的”,”如果”,”是” );
public

MyChineseAnlyzer(String[】stopWords){

this.stopWords=StopFilter.makeStopSet(stopWords); )
public

MyChineseAnlyzer 0{

成都理1=大学硕士学位论文

stopWords=StopFilter.makeStopSet(FILTER_STOP_WORDS); }
public TokenStream

tokenStream(String fieldName,Reader reader){

try{ splitWord=new ICTCLAS300; inputString=FilelO.readerToString(reader); String resultString=splitWord.paragraphProcess(inputString); return new StopFilter(new LowerCaseTokenizer(new StringReader(resultString)), stopWords); } catch(IOException e)(
String ICTCLAS30

System.out.println(”转换出错”);
return null;

} )

) 用MyChineseAnlyzer进行索引,查询,测试。效果很好.可以很明显观察到使 用后的分词效果得到改善,接近于人工分词的效用。很好的体现了引用分词后的
特色。

范例句子:“正如地球围绕太阳转,飞行的物体以抛物线的轨迹降落等等现 象,我们的搜索领域能不能模拟一个类似地球这种具有万有引力的智能化程序,
暂且称之为惯性搜索。”

分词后的效果:正/d如/v地球/n围绕/v太阳/n转/v,/wd飞行/vi的

/udel物体/n以/p抛物线/n的/udel轨迹/n降落M等等/udeng现象/n,/wd
我们,rr的/udel搜索/vn领域/n能/v不能/v模拟/v一个/mq类似/a地球,n 这种/r具有/v万有引力/n的/udel智能化/vn程序/n,/wd暂且/d称之为/v惯 性/n搜索/vn。/wj Nutch中要使用中文分词,因为中文分词程序的速度很快,需要分词的每篇 文章字数不会达到需要占用其很长时间的程度。因此,对于每篇文章分词的请求 可以看作是大量短小线程的请求,此时使用线程池技术是非常合适的,它可以极 大减小线程的创建和销毁次数,提高程序的工作效率。

结论与展望

结论与展望
结论:
本论文结合自己三年来对软件开发知识的学习经验总结,结合当前热门的研 究对象搜索引擎技术展开研究。结合当前热门的开源项目Lueene深入研究分析。 并结合中文分词技术,把中文搜索更好的融合进该研究课题中。 本论文通过对开源框架的实现验证,得出以下结论: (1)本文通过提出按主题行业分类信息,建立相关主题词库的观点,选择性 能好、效率高、经济合理的技术框架,从而更高效的快速建立主题搜索引擎,具 有现实的意义。 (2)由于Lucene只支持单字的分割建立索引,通过引入ICTCLAS分词程序对 它进行改进,提高查询效果。 (3)对开源框架Lucene的源码和结构进行了较为深入的研究,并在此基础上 进行二次开发,由于Lucene的排序算法是透明的可以修改,可对该评分体系进 行改进,提升相关主题信息的分值,使得查询结果更加接近用户的需求。 (4)通过实例验证,对某一主题网站建立索引库,并进行分析查询,把建立 的主题搜索引擎查询结果和网站现有的搜索结果进行比较分析,对长句查询具有
更好的效果。

展望:
对主题搜索引擎研究还在进一步的探讨中,尤其主题词库的更新和效率需要 得到改进。怎样更加公平的让用户得到满意的查询结果也是我们将要面对的问 题。高效的算法、用户的潜意识期望结果、硬件设施的更新等等都需要更好的去
摸索和改进。

从最初的电子黄页开始,到如今的各种搜索概念的崛起。搜索市场充满了各 种挑战,不但是技术上要保持优势,市场运营的策略也至关重要,怎样吸引更多 的用户来关注。像搜索引擎优化(SEO)就是专门针对各个超级搜索公司来研究 推广他们的技术成果。优化的过程就是琢磨大公司具体采用的什么排序算法,怎 样让自己的网站能更多的被搜索到。各种围绕搜索引擎的行业由此展开。 搜索是一种服务,外界对搜索引擎的评价体系形式多样,除了当前的竞价排 名,未来基于搜索的商业模式和业务模式会在网络广告、电子商务、付费信息服 务等方面有所突破,个性化搜索及搜索分析将占主导地位。 搜索引擎的概念在不断的突破,诸如:语义搜索(结合上下文语境和专业领 域搜索)、挖掘式搜索(使搜索结果和用户的意图相关)、群体搜索(搜索的结 果可以加入到对结果网页的评估中,从而避免计算机算法的缺陷)。现在或许我

结论与展望

们的某些技术实现不了,但是结合人工智能的深入研究,我们将会开拓新的搜索 领域。正如地球围绕太阳转,飞行的物体以抛物线的轨迹降落等等现象,我们的 搜索领域能不能模拟一个类似地球这种具有万有引力的智能化程序,暂且称之为
惯性搜索。

由于本人能力有限,再加上时间仓促,本文不可避免的存在很多问题,希望 大家批评指正。

48

致谢

致谢
光阴荏苒,时间如梭,转眼间三年研究生求学生涯即将结束,迷茫、欣喜、 激动与欢乐伴随着我度过人生中的这段美好时光,此时此刻有说不尽的感慨与喜 悦,更有道不完的感激与感恩。 首先感谢我的导师苗放教授这三年来对我的培养、关心与教导,在我求学期 间,为我提供了大量的学习机会和研究场所,使我在研究方法、工作态度和治学 态度上得到了很好的锻炼与提高。苗老师严谨的治学态度、深厚的学术造诣、高 度的责任感和虚怀若谷的为人品格深深的感染着我,使我受益匪浅。在此谨向苗 老师表示衷心的感谢! 感谢在我学习生活巾给予帮助的各位同门。从研究生入学开始,就受到各1:c7= 同门的关心和帮助,在学习上给予我莫大的支持和鼓励,特别感谢师兄王权海博 士,在项目合作期间备受他的指导和关心。感谢陈建华博士、刘瑞博士、曹礼刚 博十、史闻博、梁君、汪国华、胡文艺、王娟等师兄师姐对我学习的帮助。感谢 黄皓、叶成名、梁军、李治强、夏涛、王海蓉、覃宇E、杨智翔、周宇鹏、郝庆 华、李海鹰等同门,和你们在一起学习讨论的日子让我受益匪浅。感谢四蕊对我 的论文进行帮助和修改,谢谢你对论文无私的细心整理。感谢同门的师弟师妹们 对我学习的支持和帮助。感谢信工院的各位曾经一起相处过的同学和朋友们。 感谢在我本科期间给予我学习成长莫大帮助的各位老师,一日为师,终身为 师。你们的教诲t卜我锦记于心。感谢王贺、刘超、丛群等同学,你们在我的学习 生涯给予了巨大的支持、帮助和鼓励。感谢所有在我学习生活中出现过的人们, 我的成长都离不开你们的影响,让我对生活,对社会有了更加深刻的认识和把握。 感谢在我学习过程巾给予我提供实习机会的四川众诚信息技术有限公司和 上海创远有限公司,感谢和我‘起工作过的同事,谢谢你们对我的帮助,让我在 技术上得到很大进步,使我对计算机行业有了更深刻的认识和发展的信心。 养育之恩,终生难忘,感谢我的爸爸、妈妈、舅舅、舅妈和全家人,在我十 余年求学生涯中对我的关怀和支持,让我能够健康的成长,教会我懂得怎样做人, 你们的言传身教,让我一辈子都不能忘怀。没有你们的理解和支持也就没有我今 天的成绩。你们永远在我的心里是最最重要的。谢谢你们1

黄波
2007年5月于成都

49

参考文献

参考文献
[1】牛志奇,丁天,天蕴哲等译.J2EE核心模式.【M】北京:机械工业出版社,2004. [2】车冬Lucene:基于Java的全文检索引擎简介[online].Available
hap://www.chedong.com/tech/lucene.html>2002 www<URL:

[3]Apache Lucene project[onl ine].Avai lable

WIFW<URL:http:/flucene.apache.o喧/>

【4]侯震宇主题型搜索引擎的研究与实现[D】北京:中国科学院文献情报中心2003 [online].Available www<URL: [5]博客园 论搜索技术对人类的四大社会性意义
http://zhuyi.cnblogs.com/>2006

[6】罗昶第四代搜索引擎一主题搜索引擎的设计与实现[D]北京:北京大学计算机科学 技术系计算机软件专业
院2006
1 997

【7】陈杰主题搜索引擎中网络蜘蛛搜索策略研究【D]浙江:浙江大学计算机科学技术学 【8】曹红林业主题搜索引擎研究【D】北京:北京林业大学林业信息管理2005 [9]Erik Hatcher,Otis
Gospodnetic
Lucene In

Action[M]Manning Publications

2004

【10】李刚宋伟邱哲编著Ajax+Lucene构建搜索引擎[M】北京:人民邮电出版社2006 [1 1]金灵等译Ajax基础教程[M]北京:人民邮电出版社2006 [12】孙卫琴李烘成著Tomcat与Java Web开发技术详解[MIlL京:电子工业出版社2005 [13]伽玛等著,李英军等译.设计模式:可复用面向对象软件的基础[M].北京:机械工业 出版社,2000 [14]王宇,林琪,杜志秀等译.JAVA设计模式.[M]北京:中国电力出版社,2003 [15儿美】霍斯特曼等著,程峰等译.Java 2核心技术卷I[M】.北京:机械工业出版社,2003 【16】刘坤等译.J2EE技术内幕【M】北京:机械工业出版社,2002 [17]柴晓路Web服务架构于开放互操作技术[M】北京:清华大学出版社2002 [18】李安渝Web Services技术与实现【M】北京:国防工业出舨社2003 [19]刘树春等.用Apache建立Web站点.[M】北京:电子工业出版社.2001 [20]设计模式:可复用面向对象软件的基础[M】.北京:机械工业出版社2000 [21】黄理等.JSP高级编程.[M】北京:北京希望电子出版社.2001 [22]中文自然语言处理开放平台[onl ine].Avai lable WWW<URL:http://www.nlp.org.cn/> [23】中文全文检索网『online].Available WWW<URL:http://www.fullsearcher.com/> [24]PluginCentral—NutchWiki[online].Available WWW<URL:http://wiki.apache.org/nutch/
PluginCentral>

[25】Nutch tutorial[online】.Available WWW<URL:http:#lucene.apache.org/nutch/tutorial8.html> [26】黄波基于Ajax的客户端应用(J】成都:计算机应用研究增刊2007 [27】何世林基于Java技术的搜索引擎研究与实现[D】成都:西南交通大学计算机应用
2003

[28】车志军人工智能在搜索引擎资源获取中的应用[D】浙江:浙江大学软件学院2006 [29]相生昌 搜索引擎系统学习与开发实践总结[c】北京:中国知网数图研发部2005 【30]王亮搜索引擎及其相关性排序研究[D]武汉:武汉大学情报学2004

50

主题搜索引擎的研究与应用
作者: 学位授予单位: 黄波 成都理工大学

相似文献(10条) 1.学位论文 王常星 基于中文分词的搜索引擎设计实现 2008
本项目是公司的电子商务网站项目下的一个关键子项目,项目的设计要求包括根据已有的分词算法,实现自有的中文分词系统,设计实现一个规模 适中的搜索引擎系统,具备较强的扩展性和稳定性,控制搜索引擎的规模。 虽然搜索引擎技术目前已经有较为成熟的解决方案,但是由于项目特别限定了搜索引擎,包括中文分词处理技术,都需要采用完全自有的设计方案 ,因此本文所针对的搜索引擎架构设计,以及中文分词算法的实现,都没有采用已经成型的开源设计方案。 搜索引擎设计采用了层次化的设计结构,将搜索引擎划分为五个层次,分别是接口层,核心层,存储层,监控系统和中文分词系统。接口层负责处 理外部程序与搜索引擎的通信过程。核心层包括四个子系统:中心控制系统,竞价系统,搜索节点和分词系统,中心控制系统是搜索引擎的核心调度系 统,竞价系统是搜索引擎可以实现经济效益。存储层是搜索引擎索引数据的存储系统所在位置,其中包括了索引目录服务和数据存储节点,存储节点可 随需求进行扩展,增撤节点只要在目录服务中作出相应更新就可以实现存储节点的扩展。搜索引擎集群在运行时,需要一个监控系统来实时监控系统各 服务以及网络的运行状态,便于及时发现解决问题,保障系统的在线正常运行。中文分词子系统在查询和更新中被调用,进行信息的分词处理。搜索引 擎个子系统间的通信,采用了成熟的HTTP协议,该协议性能稳定成熟,通过专门设计的HTTP Server达到非常高的传输性能。 搜索引擎的索引数据随着时间的积累会越来越多,系统设计采取了分布式存储方式来满足搜索性能和存储容量的两方面要求,分布式的存储结构通 过一个目录服务达到各节点数据同步的目的。 分词系统实现了最大正向匹配切分结合tri-Gram排歧的分词方法。

2.学位论文 李晓东 搜索引擎中中文分词与纠错模块的设计与实现 2008
随着互联网的蓬勃发展,各种应用服务层出不穷,搜索引擎是其中最流行的一种服务,仅次子电子邮件。伴随着搜索引擎的普及,越来越多的人通 过使用搜索引擎,获取日常工作和生活中需要的信息。 搜索引擎涉及多种技术,其中,自然语言处理技术是其中重要的一种,它可以帮助搜索引擎提高查询准确度,并丰富搜索引擎的特色功能。中文分 词技术与中文纠错技术是自然语言处理技术的两个分支,可应用在搜索引擎的分析系统与检索系统中,对于提高用户检索效率和检索结果准确度具有十 分重要的意义。 论文选题来源于一个提供旅游信息搜索的搜索引擎系统。文中对中文分词技术和中文查询词纠错技术进行了研究,并从软件工程的角度出发,设计 与实现了系统的中文分词模块与纠错模块。具体的工作包括: (1)对一种基于规则的分词算法进行了改进,使用双hash词典结构降低了算法正向、反向最大匹配时的匹配次数;使用正反最大匹配切分策略取代 逐词切分策略,降低了算法切分字符串的次数,提高了算法的分词效率。 (2)通过相关算法研究提出并实现了一种基于拼音hash词典的同音别字词纠错算法,应用于搜索引擎系统中,用于同音别字词的纠错。 (3)改进了双字驱动词典的结构,并结合新的字符串模糊匹配算法对漏字多字查询词进行纠错,增强了系统对漏字多字查询词的纠错能力。 (4)将词典技术与Ajax技术相结合,实现了查询词智能提示功能。 (5)采用N-gram切分的新词识别算法,用于发现未登录词,实现分词词库的动态更新,提高了中文分词模块的分词准确度。 (6)在漏字多字查询词纠错建议中,选择相似度在一定范围内、词频数高于某一阀值的纠错建议词条,作为相关查询词,模拟了相关查询词推荐功 能的实现。

3.期刊论文 曹羽中.曹勇刚.金茂忠.刘超.CAO Yu-zhong.CAO Yong-gang.JIN Mao-zhong.LIU Chao 支持智能中文 分词的互联网搜索引擎的构建 -计算机工程与设计2006,27(23)
中文分词技术对中文搜索引擎的查准率及查全率有重大影响.在剖析开源搜索引擎Nutch的源代码结构的基础上,基于JavaCC实现了一个可扩展的词法 分析器并将其与Nutch集成,构建了一个支持智能中文分词的互联网搜索引擎NutchEnhanced.它可用作评测各类中文分词算法对搜索引擎的影响的实验平 台.对NutchEnhanced的搜索质量与Nutch、Google、百度进行了,对比评测.结果表明它远优于Nutch,其查全率达到了0.74,前30个搜索结果的查准率达到 了0.86,总体上具有与Google,百度接近的中文搜索质量.

4.学位论文 朱海星 基于Lucene的搜索引擎的研究与应用 2007
本文对搜索引擎技术进行了深入的研究,并且探讨和实现了搜索引擎在企业中的应用。分析了当前的几种中文分词技术,并在此基础上设计出了自 己的中文分词算法,该算法达到了很好的中文分词效果。最终,利用Lucene和自行设计的中文分词工具实现了企业搜索引擎。全文的主要内容是: 一、对搜索引擎的原理和组成进行了研究。 二、由于搜索引擎在迅速激增的企业内部信息资源中的使用越来越重要,提出了针对企业信息的专业搜索引擎:企业搜索引擎技术。 三、研究全文检索技术和中文分词技术,在研究前人的分词技术的基础之上,基于开源全文搜索引擎Lucene,实现了一个自己的中文分词算法。 四、设计并实现了一个基于Web的企业信息搜索引擎。

5.期刊论文 顾爱华.赵泉.周塔.彭昱静.卫丽.徐莹莹.邹盛荣 中文分词技术在搜索引擎中的探讨 -科技信息 2009(35)
本文通过深入探讨中文分词菝术在搜索引擎中的算法描述,并详细介绍机器不断地学习新词、动态地维护词典的模型,尝试解决最棘手的处理新词问 题,使其更好地为分词提供更智能描述特别是对新词.

6.期刊论文 王华栋.饶培伦.WANG Hua-dong.RAO Pei-lun 基于搜索引擎的中文分词评估方法 -情报科学 2007,25(1)
中文分词的结果是影响搜索引擎中文检索结果质量的重要因素,能否准确有效的分词对提高搜索结果的相关性和用户满意度都至关重要.本文回顾和 整理了中文分词评估所依靠的理论依据,同时建立了一套完整的基于搜索引擎中文分词评估方法.这套评估方法涵盖了评估样本的提取、评估人员选取、 评估标准的制定、以及评估流程的设置等各个方面.实例分析的结果表明此方法是行之有效的.在此基础上,作者进一步对实验评估的结果进行了深入讨论 ,并提出了提高评估效果的几条建议,包括如何考虑评估人员背景、取舍评估项目等.

7.学位论文 马志强 校园网搜索引擎核心技术——中文自动分词 2006
随着计算机技术和网络技术的不断发展,校园网作为学校内部信息共享、校际间信息交流的平台也得到了快速发展。校园网上信息量的增加,以及 信息的分布存储,给用户检索信息带来了困难。导致校园网上大量资源得不到充分利用,造成了信息资源的浪费。校园网搜索引擎是一个对校园网内部 信息资源进行搜集整理,然后供用户查询的系统,它包括信息搜集,中文分词,索引和检索四个部分。 本课题是校园网搜索引擎课题的一个子课题。研究的目的是为校园网搜索引擎课题提供一个高效的中文分词软件包。为了实现这一目标,首先建立 了中文分词子系统实验平台的结构模型以及与其它模块间的数据接口;然后,通过对词典结构机制、未登录词识别和分词算法的研究,提出了适合校园 网搜索引擎中文分词的一整套解决方案。该方案是以机械分词为基础,包括逆向词库的建立与扩充、基于整词二分的二层索引结构、基于规则统计的未 登录词识别算法以及改进的逆向最大匹配算法等。最后,实现了中文分词子系统实验平台以及中文分词软件包,并进行了速度和内存容量的测试,得到

了字典占用内存4.28M,分词速度每秒11k字节的实验数据。实验表明,这个分词软件包可以满足当前校园网搜索引擎课题的使用。 本论文中提到的中文分词子系统实验平台和中文分词软件包是在 JDK 1.4和Oracle9i上实现的。

8.学位论文 任海一 基于上下文分析的中文分词算法研究 2006
随着Internet的迅速发展,网上信息不断丰富和发展起来。越来越多的人习惯在网上发布和获取信息。但是这些信息却是以各种形式庞杂无序地散 布在无数的服务器上,更新变化快,用户要得到真正有价值的东西有很大的困难。因此,网络搜索引擎应运而生。然而,对于中文来讲,汉语以字为基 本的书写单位。作为能够独立活动的有意义的最小语言成分的却是词。这与拉丁语系的语言以空格作为词界不同。在汉语中词与词之间没有明显的区分 标记。因此在搜索引擎的整理加工阶段,重点需要解决的问题就在于如何准确的进行词的切分。 本文专注于中文分词的优化性的研究,通过研究比对机械匹配算法和词频统计算法的各自的优缺点,提出应用马科夫链来表示中文分词的切分过程 ,并基于概率论提出语义切分理论,同时总结出语义信息函数,针对目前分词不准确,易于产生歧义等主要问题,对分词系统进行了优化处理,并最终 提出了基于上下文分析的中文分词的算法。通过实验证明了基于上下文分析的中文分词算法的准确率提高,是目前较好的中文算法之一。 本文的结构如下:第一章首先讲述搜索引擎的现状,由此进行对比中外搜索引擎的不同,同时引出中文搜索引擎的分词问题;第二章介绍中文分词 的相关概念以及技术难点和基本状况;第三章主要阐述中文分词目前的研究成果和对主流的中文分词系统的分析;第四章主要讲解本文提出的基于上下 文分析的中文分词算法的基本思想和实现目标。算法实现的过程,包括设计思想和实现的方法;第五章总结算法的不足之处,以及需要今后继续提高的 部分。

9.期刊论文 李艳欣.LI Yan-xin 搜索引擎中中文分词的研究 -电脑知识与技术(学术交流)2007,2(8)
针对目前最常用的分词算法--最大匹配算法效率低,长度受限等缺点,在对中文编码体系和中文分词的算法进行研究的基础上,提出了一种新的词库数 据结构.它支持首字Hash和标准二分查找,而且不限制词条的长度.然后介绍了基于该词库设计的一种快速的分词算法,并给出了算法的实现过程.

10.学位论文 陆宵宏 基于P2P的搜索引擎的关键技术研究 2009
Peer-to-peer(P2P)技术的一个优势便是开发出强大的搜索工具。随着互联网的快速发展,搜索引擎作为一个网络用户所需的信息检索工具,其作用 性越来越受到人们的重视。就中文用户而言,提高搜索引擎的效率的关键因素是中文分词匹配效率与搜索引擎索引检索效率的提高。 本文首先对P2P技术进行了阐述,包括P2P的定义、P2P模式与C/S模式的比较、P2P的特点以及P2P技术在搜索方面的应用及优势;其次对P2P搜索算法 进行了分类探讨,重点研究和分析了几种P2P搜索算法,并指出它们的优缺点。对以传统索引方和倒排索引方这两种索引方式为核心的基于P2P的搜索引 擎和其他几种典型的搜索引擎也进行了各方面的比较。接着,为了克服传统的集中式搜索引擎的缺点,针对中文分词本文提出了基于树状词库进行中文分 词,这种经过优化的分词方法使传统的匹配算法效率得到大大地提高,并结合XML技术为中文分词提出并实现了可行的解决方案:本文设计了基于XML与 B+树的倒排索引算法建立索引器的索引解决了传统的正、倒排索引模型实时更新性能差的缺点。将搜索引擎架设在P2P分布式网络结构之上,利用P2P的 良好的分布式特性,使搜索引擎从集中式走向分布式,使搜索引擎能更深度、更广度地搜索互联网上的用户可用的信息。 基于树状词库与XML的中文分词方法使得搜索引擎对中文文段进行分词时更为准确。基于XML的倒排索引建立解决方案从新的角度探索了中英文混合 检索的底层机制,使得搜索引擎在索引器中进行索引检索、寻找其相关的文档更为快捷。 当前,这方向的研究还处于试验、探索阶段,某些方面在理论上还需要有所突破,逐步使搜索引擎更好地服务于用户。

本文链接: 下载时间:2010年5月14日



  本文关键词:主题搜索引擎的研究与应用,由笔耕文化传播整理发布。



本文编号:170305

资料下载
论文发表

本文链接:https://www.wllwen.com/kejilunwen/sousuoyinqinglunwen/170305.html


Copyright(c)文论论文网All Rights Reserved | 网站地图 |

版权申明:资料由用户58412***提供,本站仅收录摘要或目录,作者需要删除请E-mail邮箱bigeng88@qq.com