ImageVerifierCode 换一换
格式:DOCX , 页数:38 ,大小:471.21KB ,
资源ID:21105888      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21105888.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(本科毕业设计无格式Word下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

本科毕业设计无格式Word下载.docx

1、Ruby on Rails;全文检索;相似推荐算法AbstractAs internet entered web2.0 times, web development has ushered in great changes. The emergence of AJAX, rich-client, RSS and other new concepts has just made user-centric to win the industrys attention. However, behind these changes, some advanced techniques became ci

2、vilian popular. These technologies was once hold by a few large companies, while now widely took advantage by many small Web2.0 sites- just for better user experience.This project is about to do a deep research at those key techniques, such as full-text search, Chinese word segmentation, similarity

3、recommendation, performance tuning, etc, to meet the need of a Web2.0 sites development. The way of research is to develop a site that requires these techniques. In addition, the hot framework Ruby on Rails will be used, to perform agile development practice.Finally, this project fulfilled the requi

4、rements that planned at the beginning, with high performance as a plus. In addition, this project includes the research and development of the key techniques that quoted above, so that they can be applied in real internet products. Through the whole development, I gained a lot of experience that abo

5、ut Agile and Ruby on Rails. As a matter of fact, the Agile development method can extremely accelerate the launching of products, as to save time for theirs designing and promotion, in the rapid changing Internet.Keywords: Agile Development; Web2.0; Ruby on Rails; Full-text search; Similarity recomm

6、end algorithm 引言自从Web2.0的概念在2004年兴起,互联网行业已经涌现出了一大批Web2.0网站。其中不乏成功者如国外Youtube、Facebook,国内的豆瓣。Web2.0改变了互联网:从思路上,“以用户为中心”的提出标志着网站更加重视用户体验,学会站在用户的角度考虑问题;从技术上,海量数据、富客户端、全文检索等相对复杂的技术开始在中小网站普及。在Web开发的语言方面,近几年也有了长足发展。在互联网在国内发展的最初几年,用于web开发的技术主要是微软公司的ASP,Java平台的JSP以及开源的PHP。而最近几年,又有了不少新的语言和平台普及开来,比如.net平台,pyt

7、hon、ruby、erlang等。另一方面,在Web应用的设计角度,体现出了层次化、抽象化的特征。相比以前的简单页面、简单逻辑,Web2.0时代的Web应用往往以页面众多、内容丰富、逻辑复杂为特色。如豆瓣网,拥有百万级别的图书音像资料,还要根据用户收藏的图书为不同用户做出不同推荐。可想而知,其中的逻辑是非常复杂的。正因为如此,如今的Web应用在设计的角度开始分层,基本的分层方法如MVC,将控制器、模型和页面展示分开;也有分为Web层、BIZ层和DAO层的方法,直观地抽象出业务层(BIZ)和数据访问层(DAO),是一种更适合大型Web应用所处分布式环境下的架构设计。如果说以前的Web开发只是“做

8、网页”,比做软件的工程量小很多的话,如今的Web开发可以被认为是“Software for Internet”,其中涉及到的知识广度,已经大大超过了开发传统软件。此外,当前在Web开发的方法上,也比以前更加丰富。以前更多的是单兵作战,网站上需要编程的部分较少,用网页三剑客基本可以完成。但现在的Web开发讲究分层,讲究团队协作,特别是在大网站如阿里巴巴、XX等,同一个网站下会有众多的产品线,而每一个产品线都由一个或多个团队负责。具体到一个团队,不同开发人员的工作职责又可分为前端开发、后端开发、测试、运维等,复杂程度已经超过了软件开发。由此可知,在Web开发的方法论上,近年也有了长足发展,特别是敏

9、捷开发,日益被更多团队采用。本项目拟采用敏捷开发的方式,以新近流行的Ruby On Rails框架为基础,开发一个Web 2.0社区系统。该系统以图书点评为中心,在开发过程中,致力于研究一些Web2.0网站所涉及到的关键技术,比如相似推荐算法、中文分词算法、搜索引擎技术、海量数据下的性能调优等。所有的研究都会给出可操作的解决方案,使这些技术不会停留在理论上可行的阶段。项目概述Web2.0概述“Web 2.0”的概念来自于2004年一个会议,由OReilly公司副总裁的戴尔多尔蒂(Dale Dougherty)提出。如今,“Web 2.0”一词已经深入人心。但是,至今关于Web 2.0的含义仍存

10、在极大的分歧,一些人将Web 2.0贬低为毫无疑义的一个行销炒作口号,而其他一些人则将之理解为一种新的传统理念。暂且搁置争论,不可否认的是,确实有一批公司,在Web 2.0的浪潮中崭露头角。在国外有YouTube,2006年被Google以16.5亿美金收购;还有Wikipedia, Flickr, Delicious, Myspace以及后来的Facebook, Twitter。在国内,典型的Web 2.0网站如豆瓣,以及校内等SNS类网站也可归入Web 2.0范畴。Web 2.0在商业上的成功,离不开技术上的进步。但在Web 2.0浪潮中涌现出来的新技术,大多是“旧瓶装新酒”。Web 2.

11、0涉及到的新技术主要包括:AJAX:AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。简单来说,AJAX可以实现不全部刷新页面而更新内容,可以让B/S模式的应用有C/S模式的使用体验,在“以用户为中心”的Web 2.0浪潮中,AJAX极大地提升了用户的使用体验。最早应用AJAX的Web项目是Google的Gmail和Google Map。Javascript:Javascript并不是在Web2.0时代才出现的技术,但以前开发者对Javascript的使用仅限于作为静态页面的点缀。直到

12、AJAX出现以后,Javascript才被“正名”。如今,Javascript已经被作为一种常用的编程语言,许多大公司也专门设置了前端开发工程师岗位,Javascript越来越被重视。在开源社区,也涌现出大量Javascript库,如Prototype, Script.aculo.us , JQuery等。在本项目中,我将使用Prototype和Script.aculo.us进行AJAX操作并产生一些可视化效果(Visual Effects)。RSS:RSS全称为“Really Simple Syndication”是一种描述和同步网站内容的格式,是目前使用最广泛的资源共享应用。可以被称为资源

13、共享模式的延伸。如今,将内容输出成为RSS已成为一种惯例,通过RSS,也可以将互联网上的内容更有语义化地组织起来。Web 2.0中也产生了一些基于RSS的创业公司,如Feedsky,抓虾,鲜果等。流媒体技术:流媒体技术并非Web 2.0中才出现,而是美国Real公司最早提出的。这种技术可以让用户在观看视频媒体时“边下载边观看”,对音频媒体也是如此。但Real公司并没能让它的技术普及,真正从流媒体技术中获益的是Youtube,而它依赖是基于FLV的流媒体技术。Web应用原理简述Web应用与桌面应用有显著区别。在涉及到网络交互的应用中,Web应用被称为B/S模式,桌面应用被称为C/S模式。实际上B

14、/S模式可认为是一种特殊的C/S,这里的C (Client)就是浏览器。Web应用基于HTTP协议,需要一个Web服务器来提供服务;如果Web应用是动态的,还需要一层应用服务器以执行动态代码。总结起来,Web应用的原理由浅入深,可以做如下划分:图2-1 服务静态内容对静态内容请求的处理如图2-1所示,直接由Web Server返回。图2-2 服务动态内容有动态程序的情况如图2-2所示。Web Server调用相应的解释器或VM,运行指定的文件,获得运行结果。然后Web Server将运行结果所谓响应返回。对于一些平台,如J2EE、Ruby等,将会有一层独立的应用服务器进行支撑。图2-3 有数据

15、库的情况采用了数据库以后如图2-3所示。动态的程序在执行过程中到数据库查询结果,并根据一定规则生成文本内容返回给Web Server,之后Web Server发送响应内容。图2-4 多数据库的情况多个数据库作了复制或是集群或是负载均衡的情况如图2-4所示。因为在查询压力较大时,数据库可能成为应用瓶颈,所以可以采用数据库集群。一方面可以使读写分离(主数据库只写,从数据库只读),另一方面,可以将读的压力均衡至多台服务器。这种方式在被很多大型Web应用所采用。图2-5 多个Web服务器的情况多个web服务器作了负载均衡的情况如图2-5所示。原理和数据库层面进行的负载均衡类似,但在技术细节上有所区别,

16、但都是为了分散单点所承受的压力。对Web服务器和数据库服务器都采用负载均衡的情况不再赘述,这种情况下,要考虑的因素更为复杂。在一些大规模应用中,从最前端负责请求转发的Web服务器到最后端提供数据持久化的数据库服务器,经过的可能不只一层应用。这就涉及到Web开发中的分层的思路1。MVC概述MVC是Web开发中一种常见的分层开发的思路。其中,M, V, C分别指Model(对象) , View(视图) 和 Controller(控制器)。MVC(Model-View-Controller,模型视图控制器模式)用于表示一种软件架构模式。它把软件系统分为三个基本部分:模型(Model),视图(View

17、)和控制器(Controller)。MVC由Trygve Reenskaug提出,是Xerox PARC在20世纪80年代为程序语言Smalltalk-80发明的一种软件设计模式。MVC的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外此模式通过对复杂度的简化使程序结构更加直观。软件系统通过对自身基本部份分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组:控制器- 程序员编写程序应有的功能(实现算法等等)视图 - 界面设计人员进行图形界面设计模型 - 数据库专家进行数据管理和数据库设计图2-6 MVC图示近年,在W

18、eb开发中使用MVC成为趋势。在最初的Web开发中中,像数据库查询语句这样的数据层代码和像HTML这样的表示层代码混在一起。经验比较丰富的开发者会将数据从表示层分离开来,但这通常不是很容易做到的,它需要精心地计划和不断的尝试。MVC从根本上强制性地将它们分开。尽管构造MVC应用程序需要一些额外的工作,但是它带给我们的好处是毋庸置疑的。首先,多个视图能共享一个模型。如今,同一个Web应用程序会提供多种用户界面,例如用户希望既能够通过浏览器来收发电子邮件,还希望通过手机来访问电子邮箱,这就要求Web网站同事能提供Internet界面和WAP界面。在MVC设计模式中,模型响应用户请求并返回响应数据,

19、视图负责格式化数据并把它们呈现给用户,业务逻辑和表示层分离,同一个模型可以被不同的视图重用,所以大大提高了代码的可重用性。其次,模型是自包含的,与控制器和视图保持相对独立,所以可以方便的改变应用程序的数据层和业务规则。如果把数据库从MySQL移植到Oracle,或者把RDBMS数据源改变成LDAP数据源,只需改变模型即可。一旦正确地实现了模型,不管数据来自数据库还是LDAP服务器,视图都会正确地显示它们。由于MVC的三个模块相互独立,改变其中一个不会影响其他两个,所以一句这种设计思想能构造良好的松耦合的构件。此外,控制器提高了应用程序的灵活性和可配置性。控制器可以用来连接不同的模型和视图去完成

20、用户的需求,也可以构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择适当的模型机型处理,然后选择适当的的视图将处理结果显示给用户。MVC的缺点是由于它没有明确的定义,所以完全理解MVC并不是很容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。开发一个MVC架构的工程,将不得不花费相当可观的时间去考虑如何将MVC运用到应用程序中,同时由于模型和视图要严格的分离,这样也给调试应用程序到来了一定的困难。每个构件在使用之前都需要经过彻底的测试。另外由于MVC将一个应用程序分成了三个部件,所以这意味着同一个工程将包含比以前更多的文件

21、。因此MVC并不适合小型甚至中等规模的应用程序,这样会带来额外的工作量,增加应用的复杂性。但对于开发存在大量用户界面,并且逻辑复杂的大型应用程序,MVC将会使软件在健壮性、代码重用和结构方面上一个新的台阶。尽管在最初构建MVC框架时会花费一定的工作量,但从长远的角度来看,它会大大提高后期软件开发的效率。本项目将采用Ruby on Rails框架,以及MVC的开发思想。Ruby on Rails是通过Ruby语言所开发出来的Web Framework,也是采用Model-View-Controller架构。Ruby on Rails简介Ruby on Rails,也称RoR或简称Rails,是一

22、个使用Ruby语言实现的全栈式 (full-stack)开源网络应用框架,它是严格按照MVC结构开发的。Rails努力使自身保持简单,来使实际的应用开发时的代码更少,配置更少1。Rails的设计原则包括“不要重复自己”(Dont Repeat Yourself)和“约定胜于配置”(Convention Over Configuration)。Rails框架自2003年问世以来,已经发展到第2.2版本,也出现了一大批基于ROR构建的网站。国外的Twitter、国内的Javaeye,都是用Rails框架搭建的;豆瓣的第一版也使用了Rails,这也符合其创始人阿北提出的“快速上线”的方针。Ruby

23、on Rails首先是基于Ruby语言,Ruby语言虽然冷门,却有许多令人兴奋的特性。比如在Ruby中,一切皆为对象;而号称纯OO的Java,其中的基本类型(如Integer、Long)就不是以对象的形式存在的。Ruby特有的“block”可以便捷地处理循环、回调,使Ruby可以用更少的代码完成更多地任务,而且程序保持简洁易懂。比如下面的这行代码:Ruby语言简短的代码具有强大的表现能力。根据统计,在真实的Ruby项目中,平均每个方法(函数)只有5行代码。Ruby的项目比起同样规模的Java项目,代码量只相当于Java项目的1/5。同时,Ruby的代码风格比较自由。比如函数调用可以不加括号,行

24、尾可以不加分号。这使得Ruby可以在经过包装之后,成为一种DSL(领域特定语言),这显著拓展了Ruby的适用范围。Ruby on Rails框架问世以后,以“约定大于配置”的思想,迅速征服了世界范围内的Web开发者,并给实际上占统治地位的J2EE平台带来了极大冲击。Rails框架的魅力在于把一切都按照需要的方式约定好,无需配置,甚至无需撰写代码就可以让应用成功跑起来。如今,Ruby on Rails已经发布了2.3版本。Rails框架将和另一个名为Merb的框架合并,并发布在3.0版本中。围绕着Ruby on Rails产生了一系列生产环境的部署方案,虽然还不如J2EE平台成熟,但选择已经很多

25、。本项目将采用Rails 2.1.0版本进行开发,部署环境选择Ubuntu Linux Server 8.10版本。敏捷开发简介敏捷开发是近年流行起来的一种开发模式。敏捷开发依靠变化来获取活力。团队几乎不进行预先设计,因此,不需要一个成熟的初始设计。他们更愿意保持设计尽可能的干净、简单,这保持了设计的灵活性、易于理解性。团队利用这种灵活性,持续地改进设计,以便于每次迭代结束生成的系统都具有最适合于那次迭代中需求的设计2。敏捷开发所遵循的原则包括:个体和交互胜过过程和工具可以工作的软件胜过面面俱到的文档客户合作胜过合同谈判响应变化胜过遵循计划这些规则也可以归纳为:个体交互、快速原型、客户现场、拥

26、抱变化。在互联网行业中,互联网产品的特点往往是:需要快速完成上线;需求很难在一开始完全确定;业务规则相对简单。这些特点使敏捷开发模式非常适用于互联网软件的开发。本项目将在Ruby on Rails框架的基础上,通过搭建一个Web2.0社区系统,进行一次敏捷开发实践。全文检索简介全文检索的一个关键技术是全文索引,这是一种区别于数据库索引的倒排索引(inverted index)3。在小规模数据量时,对于文本的检索可以使用数据库的like语法进行。但由于数据库索引不是为全文索引设计的,因此,使用like %keyword%时,数据库索引是不起作用的,搜索过程又变成类似于一页页翻书的遍历过程。所以对

27、于含有模糊查询的数据库服务来说,like对性能的危害是极大的。如果是需要对多个关键词进行模糊匹配:like%keyword1% and like %keyword2% .其效率之低下也可想而知。在数据量规模很大的情况下(比如百万级别的数据),根本无法使用like进行查询。建立一个高效检索系统的关键是建立一个反向索引机制,将数据源(比如多篇文章)排序顺序存储的同时,有另外一个排好序的关键词列表,用于存储关键词到文章的映射关系,利用这样的映射关系索引:关键词=出现关键词的文章编号,出现次数(甚至包括位置:起始偏移量,结束偏移量),出现频率,检索过程就是把模糊查询变成多个可以利用索引的精确查询的逻辑

28、组合的过程。从而大大提高了多关键词查询的效率,所以,全文检索问题归结到最后是一个排序问题。当前,对全文检索的研究主要由研究语言模型的数学家进行,并且取得了显著成果。在排序方面,基于tf/idf原理的打分算法成为标准;在软件领域,有Lucene、Sphinx、Xpian等开源项目用来提供全文检索服务。另一方面,全文检索在中文(以及日文和韩文)领域遇到了挑战。因为中文的文本没有天然的空格,所以需要开发单独的中文分词器来支持中文分词。支持中文的全文检索技术,可以认为是Web开发中关键技术之一。本项目将研究在海量数据下进行中文全文检索,并将所有功能完整实现。中文分词技术简介由于中文文本没有天然的空格,

29、所以对中文分词需要采用单独的分词算法进行。目前,比较常见的中文分词算法包括单字切词、二分法以及基于词库匹配的分词算法。其中,单字切词和二分法都不算是真正的分词算法,效果也不理想。本项目中将研究基于词库匹配的分词算法。基于词库匹配的分词算法,需要解决的是二义性问题。九十年代以前,海内外不少学者试图用一些文法规则来解决分词的二义性问题,都不是很成功。90年前后,清华大学的郭进博士用统计语言模型成功解决分词二义性问题,将汉语分词的错误率降低了一个数量级4-5。利用统计语言模型分词的方法,可以用几个数学公式简单概括如下:假定一个句子S可以有几种分词方法,为了简单起见假定有以下三种:A1, A2, A3

30、, ., Ak,B1, B2, B3, ., BmC1, C2, C3, ., Cn其中,A1, A2, B1, B2, C1, C2 等等都是汉语的词。那么最好的一种分词方法应该保证分完词后这个句子出现的概率最大。也就是说如果 A1,A2,., Ak 是最好的分法,那么 (P 表示概率):P (A1, A2, A3, ., Ak) P (B1, B2, B3, ., Bm), 并且 P(C1, C2, C3, ., Cn)因此,只要利用合适的统计语言模型计算出每种分词后句子出现的概率,并找出其中概率最大的,就能够找到最好的分词方法。其中,统计语言模型可以用TF/IDF算法计算得出6。在一系列研究的基础上,Chih-Hao Tsai提出了一种MMSeg算法7,这种算法可分为simple和complex两种算法。其中,simple 算法就是最简单的正向最大匹配算法。为了解决 simple 算法的不足,MMSEG 又提供了另一种选择:complex 算法。该算法使用了 Chen K. J. 和 Liu S. H. 于 1992 年在 Word identification for Mandarin

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1