(计算机应用技术专业论文)基于lucene的搜索引擎.pdf_第1页
(计算机应用技术专业论文)基于lucene的搜索引擎.pdf_第2页
(计算机应用技术专业论文)基于lucene的搜索引擎.pdf_第3页
(计算机应用技术专业论文)基于lucene的搜索引擎.pdf_第4页
(计算机应用技术专业论文)基于lucene的搜索引擎.pdf_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上海师范大学硕士研究生论文 基于l u c e n e 的搜索引擎 摘要 基于h e r i t r i x + l u c e n e 数据库搜索引擎是一种将抓取和索引的技术优势融入 到搜索引擎的方法,用户通过查询接口输入关键词,将用户输入字符串根据分词 词典进行分词,将根据分词查询索引文件,关联相关的源文档,从而返回查询信 息的过程。在服务器安全性、链接有效性以及更新及时性等方面拥有良好的性能。 本文分析了基于h e r i w i x + l u c e n e 数据库搜索引擎在工作原理、关键技术等 方面的相关技术,介绍了l u c e n e 建立索引和搜索的原理,并且在构建词库的同 时,研究了分词技术,提出了一种优化词表法的分词思想,在l u c e n e 的基础上 以决策树和链表的形式将字典中的分词存储在内存中,用最大匹配算法结合决策 树将用户输入字符串进行分词,开发了属于自己的中文分词模块,将这种思想加 以实现并且通过实验与传统的l u c e n e 自带的分词技术在空间和时间上以及分词 的准确性三个方面进行比较。同时也对l u c e n e 自带的相似度计算,用实验数据 进行了统计分析,得到对文章的匹配度策略加入权重的参数,使得匹配度相对更 准确。最后通过h e r i t r i x 与l u c e n e 进行整合,实现了基于数码产品搜索引擎。 关键字:搜索引擎;l u c e n e ;中文分词 a b s t r a c t l u c e n e + h e r i t r i xb a s e dd a t a b a s es e a r c he n g i n ei sa l la p p r o a c hw h i c h b r i n g sn e w c o n c e p to fc a t c ha n di n d e xt e c h n i c a ls u p e r i o r i t yo fd a t a b a s e si 1 1 t o t 1 1 es e a r c h e n g m e y h r o u g hq u e r yi n t e r f a c eu s e r sc a l li n p u tk e yw o r d s w h i c hw i l lb ea n a y l i s e db y a n a y s l sd i c t i o n a r y , t h es e a r c he n g i n ew i l ls e a r c ht h ei n d e xd o c u m e n t ,w h i c hi sr e l a t e d t od o c u m e n t ,a n dr e t u r n st h er e s u l t i th a sg o o d c a p a b i l i t yi nt e r m so fs e r v e rs e c u r i t y , o u t d a t e dl i n k st h a ta r en o tu p d a t e di nt i m ee t c i h i sp a p e ra n a y l i s e st h es k i l l s o fl u c e n e + h e r i t r i x b a s e dd a t 矗b a s es e a r c h e n g i n e so nw o r k i n gp r i n c i p l e ,t h ek e yt e c h n o l o g ya r e a s i n t r o d u c e st h ei n d e xa n d s e a r c hp r i n c i p l eo nl u c e n e ,a n dw h e nb u i l d i n gad a t a b a s e t h e s a u r u s ,s t u d y sw o r d a n a l y s i st e c h n o l o g y , m a k e sa ni m p r o v e m e n to no r d i n a r ya n a l y s i s t e c h n o l o g ya n d d e v e l o p sc h i n e s ew o r da n a l y s i sm o d u l eo nm yo w nb a s e do nl u c e n e s t o r e sm e d i c t i o n a r yi n t ot h er a mi nt e r m so fd e c i s i o nt r e ea n dl i n k e dl i s t ,c u t st 1 1 e e n t e r i n g s t r i n g si n t o w o r d sb yu s i n gb i g g e s tm a t c h i n ga l g o r i t h m t u r n si ti n t of a c t ,c o m d a r e si t w i t ht r a d i t i o n a la n a l y z e ri ns p a c ea n dt i m ea n da c c u r a t i o nb ye x p e r i m e n t s t h e n 1 e p a p e rs t u d y st h es i m i l a r i t yc a l c u l a t i o nw h i c hb r o u g h tb yl u c e n e ,a d d sv e c t o rw e i g h t mt oi t ,w h i c hm a k e si tm o r ea c c u r a t e l y a tl a s t ,t h ep a p e rr e a l i z e sl u c e n ed a t a b a s e s e a r c he n g i n e k e yw o r d s :s e a r c he n g i n e ;l u c e n e ;c h i n e s ew o r d s a n a l y s i s 上海师范大学硕士研究生论文基于l u c e n e 的搜索引擎 论文独创性声明 本论文是我个人在导师指导下进行的研究工作及取得的研究成果。论文中除 了特别加以标注和致谢的地方外,不包含其他人或机构已经发表或撰写过的研究 成果。其他同志对本研究的启发和所做的贡献均己在论文中做了明确的声明并表 示了谢意。 作者虢旅彤 日期:,加酊、l 歹 4 7 上海师范大学硕士研究生论文 基于i u c e n e 的搜索引擎 论文使用授权声明 本人完全了解上海师范大学有关保留、使用学位论文的规定,即:学校有权 保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部 分内容,可以采用影印、缩印或其它手段保存论文。保密的论文在解密后遵守此 规定。 论文作者签名:旅磁日期:少c d 年r 月f 日 导师签名:毛丽寥日期:扣p 年j - 月l 厂日 上海师范大学硕士研究生论文基于l u c e n e 的搜索引擎 1 1 研究的背景及现状 第一章绪论 2 1 世纪,随着网络世界的飞速发展,越来越多的用户将网络作为一种获取 信息的渠道,但如何在大量的资源中快速而又准确的取得想要的信息,成为了人 们关注的焦点,人们需要一种方便而又快捷的搜索工具。为了满足用户们这种需 要,由此便有了搜索引擎的概念。如何查询与储存这些海量级的网页,成为了一 个很值得深入研究的课题。其中全文检索与全文数据库成为了国内外研究人员研 究的热点。 1 2 研究的意义和目的 对于搜索引擎,人们并不陌生,众所周知的搜索引擎巨头g o o g l e 自1 9 9 8 年成立以来,其市值已逾千亿美元,很多用户将其网站设为游览器的主页,单从 这两点,就可以说明,在日新月异的网络信息时代,搜索引擎在人们的日常生活 中占了越来越大的比重。 据c n n i c ( 中国互联网网络信息中心) 第2 2 次中国互联网络发展状况统计 报告显示,搜索引擎是网民在互联网中获取所需信息的重要工具,是互联网中的 基础应用。目前搜索引擎的使用率为6 9 2 ,为中国第五大网络应用。同时也是 三大互联网基础应用:即时通信、搜索引擎和电子邮件最重要的应用之一。2 0 0 8 年上半年搜索引擎用户增长了2 3 0 4 万人,半年增长率达到1 5 5 ,搜索引擎用 户量持续增长。虽然搜索引擎的使用人数不断的飞速增加,但目前的搜索引擎仍 然达不到人们的期望值。集中式的通用搜索引擎技术通常会存在着以下缺陷: 1 信息不全面:目前的集中式通用搜索引擎可以检索出相关网页数对于 i n t e m e t 网络资源总网页数的利用率,还不到一半。即便是g o o g l e 这个搜 索引擎巨头也只不过利用了整个网络资源的2 0 3 0 1 。 2 更新不及时:集中式的通用搜索引擎一般要很长一段时间才会做一次更新, 因此有很多新的信息不能让搜索引擎及时搜索到。 3 准确度不够:集中式的通用搜索引擎返回的结果并不完全与用户的预期结 果一致,很可能带有很多广告信息与不相关信息。当搜索目标网页连接改 变时,会导致无效链接的问题。 4 服务器负担太重:集中式的搜索引擎将网络蜘蛛( 也叫网页爬行器) 、分词 器、索引器、查询器的工作都由服务器完成,使得服务器的压力负担过于 繁重,一旦服务器崩溃,整个搜索引擎将会瘫痪 针对以上的缺陷和不足,许多学者结合其它如数据挖掘、人工智能等技术对 上海师范大学硕士研究生论文基于l u c e n e 的搜索引擎 集中式的通用搜索引擎开展了许多有益的、创造性的工作,取得了一定的学术成 果,对搜索引擎的进一步发展和该方向理论基础的研究,有着十分重要的意义。 1 3 本文的创新点 ( 1 ) 对原有的字表法倒排搜索加以改进,采用条件概率的思想,以词频和文 章数最少的词语为基准,进行搜索。 ( 2 ) 自行编写分词程序,采用词语首字建立链表结构,并且词语在内存中采 用树的形式存放的思想,使各个首字相同的词语采用同一根节点,并且将自 己的分词器通过实验数据,与传统的s t a n d a r d a n a l y z e r 与c j k a n a l y z e r 进行 比较,减少了空间,提高分词速度 ( 3 ) 向量空间公式 跏c 嘲一o s 姚c 卜网d j q , 12 爰繁最加蝴也对 用户输入字符串加入权重,使得l u c e n e 匹配文章的精度更加准确。 1 4 本文的组织结构 本文共分为六个章节,各章节内容安排如下: 第一章是全文概述,介绍了论文的研究背景、内容和意义。 第二章全面介绍全文检索系统的组成:全文数据库,全文检索库,以及全文 查询与一般查询的区别。 第三章介绍搜索引擎的核心分词技术,列举了常用的一系列的分词技术,介 绍了正排与倒排建立索引的区别,并且结合字表法与词表法,提出了一种新的分 词法,最后介绍了l u c e n e 的网页算法。 第四章分析了l u c e n e 搜索引擎的基本构成,包括l u c e n e 的建立索引文件的 物理逻辑结构,相关搜索类。 第五章建立了一个数码产品的搜索引擎,介绍了h e r i t r i x 网络爬行的搭建, 抓取,并编写了新的相关的分词代码,将l u c e n e ,h e r i t r i x 以及其他的一系列j a v a 框架如s p r i n g ,h i b e r n a t e ,d w r 等结合在一起,组成了一个小的搜索引擎,实现了 预期的效果 第六章对全文做出总结。 2 上海师范大学硕士研究生论文 基于l u c e n e 的搜索引擎 第二章全文检索系统分析与设计 2 1 全文数据库的特点 随着计算机技术的发展,计算机辅助检索也有着一个发展过程,由检索直接 性看,从提供目录,文摘等相关的二次信息检索到可以直接获得电子版的全文; 由检索结果看,对特定关键词或者如作者,机构的等辅助信息作为检索入口的常 规检索到以原始文献中的任意词检索的全文检索等等。其中,全文检索由于其包 含信息的原始性,信息检索的彻底性,所用检索语言的自然性等特点近年来发展 迅速,成为一种有效的信息技术。 全文检索是一种面向全文的,提供全文的新型检索技术。国外多从实际角度 理解全文检索,认为它是对于文献进行数字化文档处理,同时又由于全文检索是 一种较新的技术,近年来发展迅速,随着技术更新,其理论基础和发展速度不同 步,跟不上网络发展的速度,所以还不够完善。全文检索主要有以下几个重要组成 部分:全文数据库,全文检索数据库,全文检索技术。全文数据库与传统的关系 数据库相比较,有如下特点 2 : 1 非结构化的数据结构。传统的关系数据库是结构化数据库,对于字段的要 求长短统一,类型明确,而全文检索数据库对于字段长短没有这个规定, 采用关系数据库存放的话,对于长字段,存放就显得困难了,即使能够存 放,其存放速度,也是令人大失所望的。 2 信息检索的精度,准确性。一般的数据库仅限于字段检索,对其它不作要 求,而全文检索要求检索的范围比一般的关系数据库要大很多,检索的类 型不仅仅包括字段,还应包括字,句,词。只要文献中含有检索的内容, 全文检索就要将其准确无误的检索出来。 3 检索的自然性。借助截词,邻接等匹配方法,对用户的输入字段进行分析, 从原文库中搜索,将符合要求的原文提取出来,以适当的形式显示给用户, 而不是根据字面意思机械的提取,这是与传统数据库本质的区别。 4 数据库的相对稳定性:全文检索数据库一般不需要更新,如果要更新的话, 更新的频率也不是很高,一般要过很长一段时间才需要更新。 5 信息的原始性:全文检索数据库保存的都是最原始的没有加工处理过的信 息。 2 2 全文查询与一般查询的比较 1 查询:全文查询将数据源中的数据以字词为单位通过建立倒排索引文件, 根据倒排文件结构寻找查找信息在文件结构中的位置与出现的频率。而一 上海师范大学硕士研究生论文基于l u c e n e 的搜索引擎 般的关系数据库通过连接字段,将各个表之间关联起来。 2 匹配效果:通过t e r m 进行匹配,先通过分词技术对用户的输入分析。一般 数据库盲目机械的匹配查找词,不进行语义分析,匹配出很多不符合要求 的搜索结果,这些结果不符合人们的日常生活用语。 3 匹配度:全文检索有高效的匹配算法,把符合条件的匹配最高的最有价值 的1 0 0 条的记录根据匹配度的优先级显示给用户 3 】,一般数据库没有优先 度,符合几条就显示几条,有可能显示的结果包含几万条记录,占用大量的 内存。 2 3 全文检索库构成 1 全文检索数据库直接以源文件作为来源,x m l ,t x t p d f , h t m l 等文件都可以作 为源文件,以b a t 为后缀名的文件可以直接存入关系数据库中。 2 建立索引时,对源文档和其描述数据关联一起建立索引表,描述直接存入 索引表,对索引表使用索引文件格式进行存放,查找时通过索引表关联源 文档。 3 使用程序语言对索引文件的数据进行描述,源数据直接从源文件中存取。 所有的数据都集成在文件中,检索时,在索引文件中查找,正文数据通过 连接,连接到原文。它的体系结构如图所示: 图2 1 全文检索库分为三个部分,文本数据库,也就是相关源文档,索引库,管理 系统。管理系统包括分词技术,接受用户输入字符串两部分。当我们对检索库更 4 上海师范大学硕士研究生论文基于l u c e n e 的搜索引擎 新,更新文本数据库的同时也要更新索引库,这就好比,一本书添加了新的页码, 那么目录中也要有新的标题及页码。通过以上图,我们知道,全文检索库可以直 接利用操作系统提供的源文件实现,而不用像一般的关系数据库,运用s q l 语句 建立表,然后再批量导入数据,全文检索库使用方便,对软件依赖较少,其构建 系统如下: 1 全文数据库与关系数据库,都是以文件形式存放数据的。占主流的关系数 据库,数据文件必须实现实体之间的连接,支持数据库的逻辑结构,所以 数据库要包括四方面:数据模式( 内外模式) ,数据本身,数据联系和存取 路径,而全文数据库实体连接不是很多,对事物和并发性要求不高。 2 全文数据库不需要事务的处理。这一点与一般的关系数据库有着显著的不 同。一般的数据库操作包括传统的更新,查找,删除,修改。全文数据库 对查找的要求很高,对于写入操作也不是经常进行,写入操作一般是经过 一段时间后才批量写入,对于修改和删除基本没有,有新数据插入时,并 不影响用户看到以往信息,事务处理往往是很费时间的,由此提高了效率。 仅仅全文数据库还不能够构成全文检索,还应该包括全文检索库( 索引库) 。 全文检索系统的整个框图如下: i 一1 i j 1 _ 查谒语句一) i 查词引擎f 7 又率分析引孥一 叫传统应用程序一k 4 - , - 开 发 _h w 曲应用程序一 索引引擎 坊r w 接 f 鼬。 口 0 乞 l 其它应用-色吵 一结果处理。i 厂、 、 索引文件一 文本蒡嚏库一 口 、k 一一 图2 2 图中的全文检索系统分为三个部分:引擎,索引,和外部程序接口。其中最 关键的是引擎部分,引擎部分为整个全文检索系统的核心部分,它的分成三个部 分:查询引擎,索引引擎,文本分析引擎。文本分析引擎用于将原始文档进行分 析,提取文本内容,建立d o c u m e n t ,将文本内容放入其中。索引引擎用于将 d o c u m e n t 添加到索引文件中,查询引擎,用于将用户输入字符串,通过分词技 术,分成独立的词,根据词关联索引文件,从数据源中寻找相关的信息。文本数 上海师范大学硕士研究生论文 基于l u c e n e 的搜索引擎 据库也就是源文档。全文检索系统的特点在于,用户输入字符串取得的相关文档 信息,都是源文档的原始信息。对于取得的查询结果,一般还会根据一定的公式 算法,进行筛选,将最符合条件的文档,显示给用户。当然,全文检索系统只要 取得用户的输入字符串,用户输入字符串可以通过不同的形式取得,通过编写自 己的w e b 程序,或者传统的应用程序。从功能上分的话,全文检索系统主要包 括索引功能和查询功能。 6 上海师范大学硕士研究生论文 基于l u c e n t 的搜索引擎 3 1 全文的索引组织 3 1 1 正排与倒排表 第三章词表法研究及其优化 搜索引擎的搜索准确性与速度的快慢有两个重要的因素:索引与检索。前 者是后者的基础。全文检索的关键是索引的建立,索引建立的好坏直接影响着检 索速度与精度,对搜索引擎的效率起了决定性的作用。一直以来,人们习惯于以 正排表的形式建立索引:按文档的先后顺序逐一扫描,直到找到相关的文档。这 种方法治标不治本。当文档越来越多,这种索引方式显得效率低下,为了提升检 索的速度,人们提出了倒排表的索引建立方式:目前的搜索引擎都采用了后者建 立索引。倒排与正排的主要区别在于:倒排的中心是文档中的每个字,以字为单 位,对文档进行搜索,正排的中心是文档,以文档为单位对每篇文档建立索引。 下面介绍几种常用的倒排建立索引的方法。 3 1 2 字表法 对于字建立索引有两个很重要的因素:字在每篇文章中出现的位置和出现的 频率。建立一张表,把所有不同的字符都放入这张表中,表中的其它的项记录了 每个字的位置和频率,以及文章的编号 4 。建库时只要扫描所有文档,将每个 字的信息添加到对应的字表。 3 1 3 词表法 词表法是预先建立分词词典,将文本字符串与词典作比较,匹配成功则以字 串为索引项,从而达到以词为基本单位的索引项。词表法中最关键的是分词技术, 即:将查询字符串根据存储的词典分成一个个分词。常用的分词算法有:正向最 大匹配算法,最短路径法,逐词遍历法,双向匹配,二分法。 3 1 4 最大概率切分算法 它的基本思想:对待切分的字符串,先把切分词典中有的词条全部切分,以 多种不同的切分形式,然后建立切分词图,对切分词图中的边赋予一定的概率, 每种切分形式就是一条路径,然后再多条可能的路径中取联合概率最大的一条路 径作为最后的切分结果。 上海师范大学硕士研究生论文 基于l u c e n e 的搜索引擎 3 1 5n 元语法统计切分算法 n 元语法统计切分算法是一种典型的概率全切分算法 5 。对于一个给定的 句子s - - w l w 2 w 3 w 3 ,根据信息论中的噪声信道原理,可得句子s 的切分概率p ( s ) 如下公式 p ( s ) = 尸( 形) = p ( w 1 ) p ( w 2w 1 ) p ( w 31w 2 w 1 ) p ( w mw 1 wm - 1 ) = 兀p ( w iw l w 2 wm 1 ) i - i 公式3 1 上述公式表示在词串w 1 w m 1 出现的情况下词w m 的概率。w m 1 为词的w m 的历史信息,一般考虑n ? 1 个词作为历史信息。只考虑n 1 个词的上 述求解模型被称为n 元语法统计模型。 两者结合: 把以上两种思想结合起来:先把待分字符串按照词典里有的词进行n 重不同的 切分,然后对于每一种分法,对于第一个切分的词,计算当第一个切分词存在的 时候,第二个词可能出现的概率,当第一二个词存在时,词出现的概率,依此类 推,直到字符串切分此全部概率计算完毕,接着对n 种分法取得的概率进行比较, 找到最大概率的那种分法,那么这种分法就是最完善的分词法。 3 1 6 词表法的优化 本人编写的分析器实现l u c e n e 的中文分词,采用正向最大匹配算法,结合 字表法的思想,将词表法进行改善,提出了一种优化词表法。 最大匹配算法 6 】:规定最大词条长度为m ,首先字符串指针指向带切分的字 符串的串首,读取前m 个字符作为子串,到切分词典中查找该子串,如果不存 在,则取出子串中的最后一个字符,将剩下的字符作为子串,继续查找,直到匹 配或者子串的字符数为1 ,将子串作为词,将字符指针指向子串后面的第一个字 符,继续上面的过程直到字符串扫描结束。查询结构图如下: 上海师范大学硕士研究生论文 基于l u c e n e 的搜索引擎 图3 1 具体步骤如下: ( 1 ) 首先将待分的字符串根据a c s i i 码的范围分离出英文,中文和数字,由 于英文单词可以根据空格及标点进行划分,而中文的基本单位是字,搭配不同含 义也不同,字与字之间的搭配也无明显的特征,相对于英语分词而言,中文分词 要困难得多,这里着重讨论中文分词。我在建立分词词典的基础上结合最大匹配 算法进行字符串分词。分词词典是汉语自动分词系统的一个基本组成。自动分词 系统所需的各类信息都要从分词词典中获取,词典正文是以词为单位的有序表, 因为选择分词的算法中,对长度为1 和长度超过4 的词不进行查找,所以本文的 词典过滤了长度为1 及长度超过4 的词。 ( 2 ) 接着按步骤建立索引:将词作为词典建立索引,并且以词的首字作为键 值,词作为内容建立索引,先以键值按照拼音字母的先后顺序进行排列,同一键 值的词,按照第二个字的拼音的先后顺序进行排列,依此类推,并且每个词记录 以下信息:包括当前词的相关文章的文章编码,包含当前词出现的文章个数,以 及词在文章中的相应的位置和词频。 附:词典结构: 9 上海师范大学硕士研究生论文基于l u c e n e 的搜索引擎 键值j j 山一 上j _ j0 2 1 一 上渺h 0 2 2 一 上海大学j u 0 2 弘上海市一 一 市一 11 2 2 0 j 市长一lj1 2 2 1 j市政府o r li 一 编雩。 鼹+ 又耄总数文嚣编号翔位置 率文中词频 , r 。 0 2 1 上海。 l i i ( 1 ,8 8 ) , 2 0 峄 0 2 上海大学2 0( 4 ,s 5 ) 4 。妁) #秘 0 2 2 , 上涛大学。 2 , ( 1 4 4 5 ) ( 1 4 4 ,3 5 2 ) 矿g o - r 0 2 上海市- 2 二 ( 3 , 4 ) ( 3 , 5 0 ) ,3 弘 8 2 上海带一 2 f ( 7 。2 4 ) ( 7 , 4 5 5 ) p1 5 : 。矿,矿。,矿 卜 1 2 2 0市长+( 多9 ) p4 和 1 2 2 0 南长( 7 3 8 ) 矿 1 2 2 队市长 3 : ( 8 。1 2 2 5 ) ( s 1 5 5 0 ) ,3 3 : 十 图3 2 上海中的第一个1 表示在全文搜索库里含有上海这个词的文章个数为1 ,( 1 ,1 ) 表示上海这个词出现在编号为1 的文章的第1 个位置。以键值排列的好处是进行 匹配的时候先搜索键值,找到键值后,在按照键值逐一进行搜索,提高了搜索的 效率。 ( 3 ) 运用最大匹配进行匹配,设定匹配个数为4 ,根据词典对现有字符串进行 分离,分离出分词,记录每个分词中的字数,对于以上字符串,分离的结果就是: 【上海市 市长 【发表 讲话 ( 4 ) 优化搜索:搜索主要分为两步,1 找到分词后各个词语的交集的文章编号。 2 找到每篇文章词频最少的词语的文章中出现的位置,根据该位置匹配其他词语 在本文中的位置是否符合条件,符合条件的就是命中的文档。通过先前建立的索 引查找相关分词中文章的个数最少的那个,( 把各个分词所包含的文章比作一个 个集合的话,集合中的每个元素代表包含每个分词的相关文章,即元素的个数代 表文章的个数,那么命中的文章必须是各个元素的交集,换句话说,交集中元素 l o 上海师范大学硕士研究生论文 基于l u c e n e 的搜索引擎 的个数一定小于或等于每个集合中元素的个数,那么选取包含文章数最少的那个 分词进行索引,这样可以减少搜索文章的数目) 找到那个目标分词后,按其文章 编号一一比较其他分词的文章是否包括这些文章的编号,若不存在,则淘汰该编 号的文章,选取下一个文章编号,直到找出包含所有分词的文章编号,到目前为 止,我已经确定了命中字符串的相关文章,接下来确定文章中的具体位置。然后 重新搜索,找出这些分词在命中文档中的词频最小的那个分词。因为文档数最小 的那个分词未必是文章中出现次数最小的那个分词,所以需重新搜索。我根据条 件概率思想,以词频最少的词语为基础,逐步筛选,直到找到命中的相应位置, 由此找出命中的文档。根据包含文章中词频最少的那个分词的文章中的第一个位 置,读取前一个分词的字数,乘以相应的字节,前推相关的字节,把文章中的字 符与分离出的前一个分词进行匹配,如果匹配成功,在继续向前匹配分离出的分 词,往前全部成功后,再用相同的方法以文章词频最少的那个分词为基准往后匹 配,直到全命中,如果有一个未命中,淘汰该位置,选取下一个位置,依此类推。 向前向后匹配是因为该词可能在所有分词的中间位置。 ( 5 ) 举例:就以前面列出的字符串:上海市市长发表讲话,作为例子。分词: 【上海市 市长 发表 讲话 ,对于这四个分词,查找词典,索引文件如图2 2 : f 上海市 有2 篇文章,文章号为3 ,7 ,3 号文章的词频为3 0 ,出现的第一个 位置为4 ,7 号文章词频1 5 ,出现的第一个位置3 0 【市长】有3 篇文章,文章 号为4 ,7 ,8 ,4 号文章的词频为4 0 ,出现的第一个位置为9 9 ,7 号文章词频5 , + 出现的第一个位置3 0 1 8 号文章的词频为3 3 ,出现的第一个位置为1 2 2 5 。假 设所有文档中都包含 发表 【讲话】这两个分词,并且每篇文章中词频都最大。首 先搜索文档数,找到最小的2 ,则查找文章号为3 ,7 ,查看其他所有分词是否包 含3 ,7 文档,看出 市长 不包含3 ,则3 号文档淘汰,接着看7 号文档,依此类 推,最后得出结论7 号文档命中,接着搜索词频最小的,发现 市长 一词词频为 5 最小,则寻找文档7 中 市长卜一词的第一个位置,得出3 0 ,前一个分词 上海市】 字数为3 ,一个汉字占两个字节则将3 0 前推6 个字节,在与分词 上海市 比较, 是否相同,如果相同则比较 市长 后面的 发表 ,原理相同,未命中则淘汰该位 置,进入 市长】的下一位置,依此类推,直到匹配原先的字符串或者文章搜索结 束。 3 2 向量空间模型 搜索完命中的文档之后,l u c e n e 并不是把所有命中的文档全部列出显示给 用户,而是采用了向量空间模型的方法 7 】将命中的文档进行有筛选的显示给用 户。在向量空间模型中,每一个命中的文档可以用一个m 维向量表示,m 代表 了命中文档索引项的个数,m 维向量中的每一个值代表了各个索引项在文档中 上海师范大学硕士研究生论文 基于l u c e n e 的搜索引擎 的比重。对于不存在某一索引项的文档,该索引项的比重为0 那么每个文章就可 以用向量d ( w 1 ,、2 ) 表示,而用户查询的字符串中的分词可以用向量q ( w l ,w 2 ) 表示,有了向量d 和q ,我们就可以这个两个向量夹角的余弦函数 代表两者的相似程度,l u c e n e 对命中的每个文档的对于用户输入字符串的这个 相似程度进行降序排序,选取排在前面的一定数量的文档显示给用户。相似度计 算公式如下: 删一c o s 吲一网d j oq , 2 一 公式3 2 举个例子:用户输入字符串:房价政策。分词后为: 房价 政策 。文章号 为1 的文章是命中文档( 即:文章中至少有一处出现房价政策) 。该文章中房价 词频:5 ,政策词频:1 9 ,还有其他词汇,结构调整词频:8 ,战略新兴产业词频:7 , 整体上市词频:“,区域经济词频:5 ,文章中共有关键词5 2 4 2 个。那么房价一词 的比重就是:o 0 0 0 9 5 3 8 3 4 ,政策:0 0 0 3 6 2 4 5 7 1 ,结构调整:o 0 0 1 5 2 6 1 3 5 ,战略性新 兴产业:0 0 0 1 3 3 5 3 6 8 ,整体上市:0 0 0 2 0 9 8 4 3 6 ,区域经济:0 0 0 0 9 5 3 8 3 4 ,所谓比重, 就是词语在关键词中占得百分比。对于用户输入的字符串,结构调整这个词用户 没有输入,那么m 向量中结构调整的比重为o ,则m 向量为 ( 0 0 0 0 9 5 3 8 3 4 ,0 ,0 ,0 ,0 ,0 ) ,d向量为 ( 0 0 0 0 9 5 3 8 3 4 ,0 0 0 3 6 2 4 5 7 1 ,0 0 0 1 5 2 6 1 3 5 ,0 0 0 1 3 3 5 3 6 8 ,0 0 0 2 0 9 8 4 3 6 ,0 0 0 0 9 5 3 8 3 4 ) , 我们根据以上公式计算c o s 值,然后对每个命中的文档都进行计算,把得出的余 弦值,从大到小进行排列,排在前1 0 0 位的文档对于用户字符串的价值最大,所 以将它们显示出来。下面的表列出了实验得出的相关数据: 搜文章1 出现的权重文章2 出现 权重 索关键词关键的关键词关键 关 ( 关键词个数 词词 ( 关键词个 词词 键5 2 4 2 )频 数1 3 2 9 ) 频 词 房0 0 0 0 9 5 3 8 3 40 0 0 价 房价 a 房价7 5 2 6 7 1 1 8 政策 1 9 0 0 0 3 6 2 4 5 71 政策 2 3 o 0 17 3 0 6 2 4 5 结构调整 80 0 0 1 5 2 6 1 3 5o 战略性新兴产 7 0 0 0 13 3 5 3 6 80 业 整体上市 1 10 0 0 2 0 9 8 4 3 6o 区域经济 一 00 0 0 0 9 5 38 3 4 o 1 2 上海师范大学硕士研究生论文基于l u c e n e 的搜索引擎 搜文章1 出现的 关键 权重文章2 出现 关键 权重 索关键关键词 词词 的关键词 词词 词 ( 关键词个数 频 ( 关键词个 频 5 2 4 2 ) 数13 2 9 ) 政策 0 0 0 0 9 5 3 8 3 4o 0 0 房价 5 房价 7 5 2 6 7 1 1 8 政策 1 90 0 0 3 6 2 4 5 7 1政策2 3 0 0 17 3 0 6 2 4 5 结构调整 80 0 0 15 2 6 1 3 5o 战略性新兴产 70 0 0 1 3 3 5 3 6 80 业 整体上市 1 10 0 0 2 0 9 8 4 3 6o 一 区域经济 00 0 0 0 9 5 38 3 40 0 0 o 房地产 9 0 6 7 7 2 0 0 9 4 、 房价:m i ( o 0 0 0 9 5 3 8 3 ,0 ,0 ,0 ,0 ,o ) , d i ( o 0 0 0 9 5 3 8 3 ,0 0 0 3 6 2 4 5 ,0 0 0 1 5 2 6 1 3 5 ,0 0 0 1 3 3 5 3 6 8 ,0 0 0 2 0 9 8 4 3 6 ,0 0 0 0 9 5 3 8 3 相似值:0 1 9 6 8 7 4 8 0 8 房价:m 2 ( 0 0 0 5 2 6 71 ,0 ,o ) d 2 ( 0 0 0 5 2 6 7 1 0 0 17 3 0 6 2 4 5 ,0 0 6 7 7 2 0 0 9 ) 相似值:0 2 7 2 6 81 2 8 5 政策:m i ( o ,o 0 0 3 6 2 4 5 ,0 ,0 ,0 ,o ) d 1 ( 0 0 0 0 9 5 3 8 3 0 0 0 3 6 2 4 5 0 0 0 1 5 2 6 1 3 5 。0 0 0 1 3 3 5 3 6 8 0 0 0 2 0 9 8 4 3 6 ,0 0 0 0 9 5 3 8 3 相似值:0 7 4 8 1 2 4 2 7 1 政策:m 2 ( 0 ,0 0 0 17 3 0 6 2 4 5 ,0 ) d 2 ( 0 0 0 5 2 6 7 11 8 ,0 0 1 7 3 0 6 2 4 5 ,0 0 6 7 7 2 0 0 9 ) 相似值:0 8 9 5 9 5 2 7 9 5 由此可见:对于不同的输入字符串,文章所匹配的相似度也各不相同,对于 房产等词汇,文章1 相对显得比较有价值,而对于政策之类的词汇,文章2 显得 1 3 上海师范大学硕士研究生论文基于l u c e n e 的搜索引擎 有价值。 但是这样还存在一种问题,以上的匹配结果不够精确,因为没有考虑用户输入 字符串顺序的先后对搜索结果的影响,没有侧重点,对于这种相似度返回结果相 同的特殊的情况,传统的公式就无法选择哪一篇了,为此我对用户输入字符串也 加入了权重的概念,即输入的第一个词语赋予的权重为l ,输入的第二个词语赋 予的权重为1 2 ,输入的第三个词语赋予的权重为1 3 依次类推,将每个分词与 相应的权重相乘,再用公式计算出相似值,下面举例说明: 假设用户输入的字符串分词后的结果为:诺基亚n 7 3 ,诺基亚n 9 6 ,手机, 文章1 的词语权重为:诺基亚n 7 3 :0 0 8 诺基亚n 9 6 :0 1 4 ,手机:0 6 ,文章2 的词语权重为:诺基亚n 7 3 :o 1 4 ,诺基亚n 9 6 :0 0 8 ,手机:0 6 ,这样就产生了 一种问题,两个权重相同,l u c e n e 就会无从取舍,虽然这种情况产生的概率很 小,但是不排除这种可能,要想解决这种问题,就应该从输入字符串的分词入手, 我给字符串分词也加入了权重的概念,显然用户把n 7 3 排在前面,说明n 7 3 比 n 9 6 重要,那么我们按照分词的先后次序给予不同的权重,n 7 3 的权重为l ,n 9 6 的权重为1 2 ,手机的权重为l 3 ,对于文章1 输入字符串的向量就是:( 1 ,0 5 ,1 3 ) 与文章1 的向量( 0 0 8 ,0 1 4 ,0 6 ) ,计算相似值0 4 5 8 8 ,对于文章2 ,输入字符串向 量就是( 1 ,0 5 ,1 3 ) ,与文章2 的向量( 0 1 4 ,0 0 8 ,0 6 ) ,计算相似值0 5 0 0 6 ,把两个 结果作比较,这样就可以看出文章t 偏向于n 7 3 ,相对于用户输入的字符串有价 值,如果用户输入顺序相反的话,那么文章l 显得有价值,否则,无论用户怎样 输入,位置对于相似度结果无任何影响。 搜文章1 出现的 关键 输入权重文章2 出现 关键 输入权重 索关键 关键词词词 的关键词 词词 词频比频比 重重 n 7 3n 7 30 0 81n 7 30 1 41 n 9 6n 9 60 1 40 5n 9 60 0 8 0 5 手机手机 o 60 3 手机 0 60 3 1 4 上海师范大学硕士研究生论文 基于l u c e n e 的搜索引擎 第四章i u c e n e 全文搜索引擎 l u c e n e 8 9 作为一个优秀的全文检索引擎,用j a v a 语言编写,j a v a 语言是 面向对象的语言,所以l u c e n e 具有强烈的面向对象特征。当然,j a v a 语言最大的 特征是与平台无关,所以l u c e n e 具有与平台无关的索引文件格式,通过抽象将系 统的核心组成部分设计为抽象类,具体的平台实现部分设计为抽象类的实现,此 外与具体平台相关的部分比如文件存储也封装为类,经过层层的面向对象式的处 理,最终达成了一个低耦合高效率,容易二次开发的检索引擎系统。 4 1l u c e n e 系统结构与源代码组织结构 l u c e n c e 的系统结构图: 图4 1 基础结构封装、索引核心、对外接口组成了l u c e n e 系统。其中 o r g a p a c h e l u c e n e i n d e x 与l u c e n e 建立索引文件有关,是l u c e n e 系统的重点。 l u c e n e 的主要功能主要有七个部分,分别对应了图中的相关七个包【1 0 】【1 1 】。 o r g a p a c h e l u c e n e q u e r y p a s e r 是l u c e n e 的s e a r c h 功能中的一部分,作为 o r g a p a c h e l u c e n e s e a r c h 的语法解析器存在,由s e a r c h 连接对外接口。s e a r c h 是 l u c e n e 的搜索类。a n a l y s i s 是l u c e n e 的分词类,用于根据现有的分词词典对字 符串进行分词。i n d e x 和s t o r e 类用于建立索引文件,即搜索源文档,以倒排形式 建立源文档与索引文件的关系。d o c u m e n t 类是d o c u m e n t 形式封装源文档文本资 源。 上海师范大学硕士研究生论文基于l u c e n e 的搜索引擎 4 2 建立索引 对于l u c e n e 搜索引擎而言:第一步且关键的一步就是建立索引。l u c e n e 建 立索引分为四个步骤:1 提取文本2 将文本内容转换成d o c u m e n t 对象3 分析4 建立索引文件。 l u c e n e 索引对象:l u c e n e 对源文档的要求很低,并不局限于纯文本文件, 只要包含 2 4 文本的一切资源都可以作为源文档,如:网页,p d f ,w o r d 等。l u c e n e 对于多种文档处理如下图: 图4 。2 提取文本后,构建d o c u m e n t 对象就成了建立索引的第二步,l u c e n e 建立 索引和搜索都是建立在d o c u m e n t 基础之上的,l u c e n e 先将p d f , 网页,纯文本文 件等源文件的文本信息用提取,转化等方式,建立d o c u m e n t 对象,然后再对 d o c u m e n t 对象建立索引。当然我并不局限于对一种源文件建立一个d o c u m e n t , 我把不同类型的数据源组织成一个d o c u m e n t 对象,将其看成带有多个数据源的 虚拟文件。只要有d o c u m e n t 对象,l u c e n e 就可以对之建立索引。所以设计将原 文档中的文本信息提取转化d o c u m e n t 的工具成为了必不可少的一步。 1 6 上海师范大学硕士研究生论文 基于l u c e n e 的搜索引擎 4 2 1 索引逻辑结构 l u c e n e 索引最大的单位是段( s e g m e n t ) 1 3 ,每一段有若干个文档( d o c e m e n t ) 组成,每个文档由若干个域( f i e l d ) 组成,每个域由若干个项( t e r m ) 组成,项是索引 最小的单位。d o c u m e n t 与f i e l d 是一对相关的概念。把源文件转换成d o c u m e n t 时,需要存放源文件的一些信息,诸如:网页u d ,网页标题等,这些信息就用 f i e l d 存放。对于f i e l d ,有三种处理方式:是否切词,是否索引,是否存储。f i e l d 对应了四个不同类型的字段( t e x t ,k e y w o r d ,u n i n d e x e d ,u n s t o r e d ) 。 1 t e x t f i e l d 一旦被t e x t 引用,就表示其内容需要被切词和建立索引。t e x t 字段有两 个不同的构造函数:f i e l d t e x t ( s t r i n g ,s t r i n g ) 和f i e l d t e x t ( s t r i n g ,r e a d e r ) s t r i n g 类型 字段不仅被

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论