搜索引擎研究与开发

2024-10-03

搜索引擎研究与开发(通用8篇)

搜索引擎研究与开发 篇1

一引言

随着计算机的普及以及计算机在教学上的广泛运用, 电子文档作业以及打印作业已成为大学生作业的主要类型, 然而学生与老师的沟通问题却未得到有效的解决。遗忘作业要求、排队打印、移动硬盘感染病毒等问题相继出现在大学生的学习生活中。打印店不便利、安全性不高等问题大大增加了学生的学习负担。虽然目前已有许多课程管理系统, 但并没有有效地减轻学生的学习负担。

为了打破时间和空间限制, 建立学生与老师的沟通桥梁, 帮助老师对课程进行管理, 本文研发了大学生社区精准服务系统——“学习委员”新理念课程管理系统。“学习委员”学生课程管理系统, 作为学生桌面学习辅助软件, 及时向学生提供相关课程的作业信息, 在方便学生进行课件下载的同时, 为他们提供了作业上交和打印等功能, 在加强教师与学生沟通的同时, 提高学生的学习以及教师的作业统计效率, 减轻学生学业负担。

根据学生的学习需求、教师的教学需求, 本文研发的“学习委员”学生课程管理系统由教师终端和学生终端构成。在教师终端中, 教师可轻松地布置作业、上传课件、查询和点评作业以及对相关课程进行管理, 大大减少了老师的工作量。在学生终端中, 学生可及时查阅作业要求、下载课件、上交作业以及打印和上传文档等, 在很大程度上为学生的学习提供了便利, 提高了学习效率。本课程管理系统为老师和学生提供一个新的沟通平台, 增强了师生间的互动和沟通。

“学习委员”软件在设计时考虑到服务端后期的可扩展性, 故采用ICE作为第五层的通信协议, 客户端采用VC++平台实现, 界面使用商业的Dskinlite界面库实现。

二面向对象的中间件ICE

本文的核心内容是需要使用容易扩展部署的软件架构, 服务端将来可能需要移植到其他平台, 或者是服务器集群。因为将来用户的数量是无法预测的。在一般情况下, 解决开发在异构平台上运行的软件方案就是使用中间件产品。中间件能够很好地屏蔽平台间的差异性, 并为开发提供便利。ICE (Internet Communication Engine) 就是这样的产品。

中间件是分布式系统中集成各个组成的软件粘接剂。也有人把中间件定义为网络环境中一组为许多应用需要的、可复用和可扩充的服务或功能。大型应用软件通常要求在软硬件各不相同的分布式网络上运行。为了更好地开发和应用能够在异构平台上运行的应用软件, 迫切需要一种基于标准的、独立于计算机硬件以及操作系统的开发和运行环境, 中间件技术应运而生。DCOM和CORBA这样的使用多年的面向对象中间件平台, 正逐渐显现出许多难以解决的问题, Microsoft NET平台和DCOM都是Microsoft的独家解决方案, 不是异种环境下的选择。CORBA近年来已停滞不前。Web服务基于HTTP的SOAP协议无论是在网络带宽还是在CPU开销方面, 都会给应用造成严重的性能恶化, 以至于无法适用于许多有苛刻性能要求的系统。

ICE是一种面向对象的中间件平台。从根本上说, 这意味着ICE为构建面向对象的客户-服务器应用提供了工具、API和库支持。ICE应用适合在异种环境中使用:客户和服务器可以用不同的编程语言编写, 可以运行在不同的操作系统和机器架构上, 并且可以使用多种网络技术进行通信。无论部署环境如何, 这些应用的源码都是可移植的。

在从不发出请求, 只是响应请求的意义上, 许多服务器常常不是“纯粹”的服务器:它们常常充当某些客户的服务器, 但为了完成它们的客户请求, 它们又会充当另外的服务器的客户。与此类似, 在只从某个对象那里请求服务的意义上, 客户常常也不是“纯粹”的客户:它们常常是客户-服务器的混合物。例如, 客户可以在服务器上启动一个长时间运行的操作, 在启动该操作时, 客户可以向服务器提供回调对象, 供服务器用于在操作完成时向客户发出通知。在这种情况下, 客户在启动操作时充当客户, 而在接收操作完成通知时充当服务器。这样的角色反转在许多系统中都很常见, 所以, 许多客户-服务器系统常常可以被更准确地描述为对等系统。要想与某个ICE对象联系, 客户必须持有这个对象的代理。代理是客户的地址空间中的一种制品;对客户而言, 代理就是ICE对象的代表 (该对象可能在远地) 。一个代理充当的是一个ICE对象的本地大使。

ICE对象是一种具有类型、标识, 以及寻址信息的概念性实体。但客户请求最终必须到达具体的服务器端的处理实体, 由该实体提供操作调用的行为。换言之, 客户请求最后必须到达服务器, 在其内部执行代码, 而这些代码用特定的编程语言编写, 并在特定的处理器上执行。在服务器端提供操作调用的行为的制品叫做servant。一个servant提供一个或多个ICE对象的实质内容 (或体现这些对象, incarnate) 。实际上, servant就是服务器开发者编写类的实例, 这些类作为一个或多个ICE对象的servant向服务器端run time进行注册。类的方法对应于ICE对象的接口上的操作, 并且提供这些操作的行为。一个servant可以只体现一个ICE对象, 也可以同时体现若干ICE对象。如果是前一种情况, servant所体现的ICE对象的标识在这个servant中是隐含的。如果是后一种情况, 在每次收到请求时, servant也会收到ICE对象的标识, 这样, servant可以决定在处理该请求期间, 体现哪一个对象。反过来, 一个ICE对象也可以拥有多个servant。例如, 我们可以为某个ICE对象创建一个代理, 这个对象有两个不同的地址, 分别在两台机器上。在这种情况下, 我们将拥有两个服务器, 每个服务器都有一个servant, 但两个servant体现的是同一个ICE对象。当客户调用这样的ICE对象上的操作时, 客户端run time只把请求发给一个服务器。换句话说, 使用体现同一个ICE对象的多个servant, 你可以构建冗余的系统:客户端run time试着把请求发给一个服务器, 如果失败, 就把请求发给第二个服务器。只有在第二次尝试也失败的情况下, 错误才会报告给客户端应用代码。

三部分系统模块的实现

1. 配置文件解析

配置文件的解析主要依靠自定义函数parsemainini () 函数来完成, 该函数主要调用WIN32 API有关解析ini文件的函数来完成从ini文件读取配置载入到指定变量的操作。

2. 检查版本更新

版本检查主要依靠getverinfo () 函数载入目前系统版本到变量, 再与远程服务器通信取得最新版本号进行对比的方式进行。同时系统会做出是否需要更新的判断, 如果需要更新, 系统再调用startupdate () 函数进行更新。实际上, startupdate () 函数仅仅是打开外部程序houjieupdateclient.exe, 再交由该子程序去完成更新任务。更新子程序会从服务器下载需要更新的文件的列表进行解析, 然后根据列表依次下载更新文件, 覆盖到当前文件夹, 值得一提的是, 若不存在文件夹则会自动创建, 若已有文件则自动覆盖。完成更新以后, 子程序重新启动更新完的主程序, 便会自动退出。

3. 注册与登录的实现

在注册界面上, 除了一些常规的注册选项外有几个值得一提:学校、学院、班级。因为系统目前只对固定的学校的固定专业同学进行内侧, 所以学校以及专业班级信息必须从服务器取得以保证准确。并且还需要考虑以后对系统进行扩充, 所以本系统用注册通信器第一次向服务器发起请求, 取得学校信息, 因为学校信息是处于信息链的顶层。有你学校信息后, 系统利用用户选定你的学校信息代码进一步请求服务器, 并获得学院信息, 以此类推, 最后获得班级信息。在填写完所有必须填写的字段以后提交信息到服务器即可完成注册。用户注册界面, 见图1。

在处理登录时, 由于验证登录信息需要与服务器进行通信, 而通信必然有可能存在一定的人为可察觉的延迟。为了使本系统对用户友好, 有必要在登录的时候显示登录动画。这样, 系统在后台通信, 而UI则响应用户消息并显示登录动画。为实现这个需求, 本系统新初始化一个工作线程, 该线程处理与服务器进行登录信息验证的事项, 主线程则作为UI线程响应用户消息。这样也有效防止了登录时出现的UI界面无反应假死的现象。

4. 教师任务与上传打印

本系统需要时刻检测教师布置的新任务并呈现给客户端用户下载, 系统通过主通信器向服务端请求并取得包含教师所有当前未完成任务的列表, 任务则是一个结构体, 具体为任务ID、名称以及任务文档下载等。由于需要时刻检测有无新任务出现, 所以在实现中, 系统首先记录第一次返回的任务列表中的任务数目, 然后系统新增一个工作线程去轮询服务器返回当前未完成的任务列表, 如果新返回的任务列表里的任务数目比已经记录的要多, 说明教师布置了新的任务。这时通知用户有新任务, 并把新任务更新到列表上。

在打印文档上传的模块中, 用户可以选择本地被允许的文件类型进行上传, 上传前系统会询问用户的地址以方便派送。上传的实现, 是通过调用主通信器向服务器发送建立上传任务以及传输的调用来完成。派送的地址在此时也是发送给服务器记录起来。值得注意的是, 在上传文档时, 需要新增一个工作者线程进行上传任务的处理, 否则会造成主线程堵塞, 进而导致假死的现象。

5. 用户信息显示与余额充值

在最后一个选项卡中, 是用来显示用户的详细信息以及提供修改用户信息的界面。修改用户信息时, 系统通过主通信器与服务器通信并验证当前密码的合法性, 当用户确认修改时, 系统再次通过主通信器向服务器发送修改信息, 修改成功后, 系统会立即刷新当前信息, 并填入新的信息。

余额充值是一个界面按钮, 点击此按钮将会引导用户自动登录官方充值页面进行充值, 值得一提的是, 系统通过从服务器取得的当前唯一的通信令牌来对用户进行引导登录, 所以用户登录网站充值是全自动的。

四总结

本系统是采用Internet Communication Engine通信中间件, Dskinlite商业界面库在MFC平台下开发的。ICE中间件提供客户端服务器完美跨语言分离的解决方案, 并为后期服务器扩展提供极大便利。通过Dskinlite商业界面库的使用, 我们可以将界面美化的动作与应用程序的逻辑完全分开, 在开发该客户端的时候可以将注意力集中于应用程序的逻辑, 极大地提高开发效率。MFC是当下较热门的C++图形界面开发平台, 它由微软提供, 提供了大量的Windows下的图形界面程序开发的接口API的封装与工具, 极大地提高了开发的效率。

参考文献

[1]Henning, M., and S.Vinoski.Advanced CORBA Programming with C++[J].Beijing:Addison-Wesley, 1999

[2]金碚弘等.分布式系统概念与设计 (第三版) [M].北京:机械工业出版社, 2004

[3]杨小、沈曾伟.Ice协议的形式化分析[J].计算机科学, 2006 (33)

[4]Henning M.A new approach to object2oriented middleware[J].IEEE Internet Computing, 2004 (1) :66~75

[5]汤晓燕、徐竞.ICE中间件的研究与应用[J].常熟理工学院学报, 2009 (10)

重视开发现代企业的引擎体系 篇2

企业行政管理到底是怎样的呢?从架构上看,可把它分为经理管理制、人本管理、文化管理、社会交易管理和组织变革管理。

1、经理管理制。从现代企业的发展历程来看,企业行政管理注入到企业中的一个突出特征就是职业经理的产生:最早管理者既是所有者又是经营者的形态,但随着企业规模的扩大而弊端凸现,迫切需要把所有权与经营权分离,经理制就应运而生了。职业经理在实质上掌握了行政大权,在行政管理的各个方面充当了不同的角色。这些角色在配合协同的背后有其冲突的一面,经理面对这些冲突时就产生了张力:(1)经理首先是一个组织者。作为多个不同部门的总负责,经理需要有过人的见识,能够给定部门组织的原则和运营规则,能够在部门中充当指挥协调者,其组织功能在企业中是强势的。(2)经理在制定游戏规则后,又成为一个忠实的执行者。他对于部门的计划、运作行使着监督权,任何制度外的运行方式都一定会被制止。(3)经理最终是一个重新评价者或称变革者。企业以市场为导向,经理将是一只“看得见的手”。他凭借自己的认识来理解市场,然后再回归自己的部门,审视并评价部门的运作。由于市场是变化的,其结果必然就是经理将不断地领导变革。(4)组织(制定)者、执行者以及变革者这三个角色是渗透着的,所以冲突不可避免。经理如何在其中充分发挥灵活性并达到推动企业发展的目的,这是考评企业行政质量的重要指标。

经理既是问题的预见者,又是问题的解决者,决定和管理着企业的边界,在人事上推动着激励与控制,在企业文化上起着倡导作用,在市场决策之外还必须监督社会交易,并在环境发生变化的时候果断地发起组织变革,在全新的企业运营理念中,职业经理制是涵盖了企业外环境和企业内体系综合运作的巨大权力载体。

2、人本管理。新一轮管理科学发展对企业发展引擎作出了人本管理的设计:(1)霍桑实验证明探索人的行为规律,善于用人,善于激励人,能够提高劳动生产率。随着人性化管理水平的提高,这种效果变得日益清晰。(2)现代企业受到知识经济的不断冲击,越来越明显的认识到人是知识的载体,以知识为增长点说到底是实行以人为本的管理体制。经济利益是企业谋求的核心,归根到底是要符合人的需要,企业要为人而生产;只有人对知识、技术的运用才能形成生产力,所以企业最重要的资源和财富是人。(3)人本管理在方式上是改进工作设计和实行民主参与,再以各种方式(例如企业文化熏陶)予以刺激和激励,特别是注重把企业的目标契合到个人的目标中,保持双向互动,形成双赢。

人事制度的变革往往容易成为组织变革的先行者,人本主义作为一个灵魂贯穿了组织的调整和重组;同时人本管理又与企业文化塑造有密不可分的联系,特别是在融合企业与个人的价值观上,人本管理强调了双方目标的一致性。在知识经济时代,凸出重视人才、活用人才是企业制胜的秘诀。随着人才交流的频繁,人事管理面临的挑战更大,方向不仅是如何搜集人才,还有“集成”人才,这样才能“集成”知本。

3、文化管理。企业文化对于整个行政管理系统来说是一种根本性的东西———价值观。戴维·贝赞可把企业文化定义为“企业成员中共有价值观、信仰和行为准则的集合体”。综合文化的绩效考评得出,将成本投入付诸企业文化建设实际是投资了效益倍增器。这源于企业文化的功能:(1)导向功能。企业文化反映了企业整体的共同追求、共同价值取向和共同利益,对于企业的生产、经营及管理行为产生了导向作用。(2)补充功能。也就是文化对正式控制的补充。在实行人本管理的企业中,要发挥一种凝聚功能,由员工产生的对企业强烈的向心力推动组织的进步。(3)节省内部费用的功能。企业行政管理在管理劳动者时,由于有了文化认同,可以大量的减少讨价还价的成本,同时也减少了团体分裂(劳资矛盾等)带来的高昂代价。

4、社会交易管理。企业作为社会组织是一个开放系统,受到社会环境的制约,也与社会环境发生物质交换。企业的发展日益表明,要通过一定的管理活动从环境中争得属于自己的那份“蛋糕”。现代企业处于复杂的竞争环境中,不仅不能获得所有的资源,还不可能通过市场交易得到稀缺资源,这就使得社会交易成为必然。社会交易指“拥有资源或有资源控制权的两方或多方之间的交换,它发生在市场之外”。

社会交易还是以交易费用理论为基础的。作为交易的一方,企业面对的可能不只一个谈判者,还有与自己竞争的一个或多个竞争对手。这种竞争往往是以抬高交易成本为代价,有时会以一方支付不起成本而退出来告终;有时会以分享资源的相互妥协来平衡(也不排除多方失败的情况),关键就看费用是如何计算的。社会交易管理从内容上看综合了政治、历史、文化、法律等非经济的因素,最终是以信息分析、决策执行的方法来权衡,所以作为社会交易的管理者应具有很高的素质。社会交易避开市场的规范,带来市场失效,同时成本投入争夺资源会造成不公平,也容易滋生腐败。从长远来看,社会交易管理需要制度建设的环境,以公平和公正为价值取向,制定普遍适用的游戏规则,提供交易渠道和信息。企业行政管理则通过对成本效益和社会规范的双重遵守完成社会交易管理。

5、组织变革管理。从伍德沃德的权变理论可以引申出组织变革不是管理的目标,而是一种管理的方式、手段的变化。相对于环境条件和管理对象这两个比较客观的因素而言,这种变革更体现了组织能动适应的活力。在企业行政管理中,需要密切关注多方互动、相互协调的关系。聪明的管理者善于预见并适时地领导部门改革,推动企业发展。

组织变革管理的入口是权力分配。权力体现在企业结构中就是不同的职位带来在职者不同的资源掌控能力。权力能帮助或损害一个企业的绩效。企业中所谓的组织变革实际上就是权力集中与分散的问题,其中有两个原则:(1)企业权力授予应体现“权责相称”,就是说要依据“管理者为企业创造的价值”、“由此形成的替代它们的成本大小”、“授权应避免带来他们与企业目标的冲突”这三个出发点来配置权力。(2)从企业发展的不同阶段来看,企业在起步阶段或面临重大挑战时采取集权的方式较为有效,而在规范管理和稳步发展时,唯有体制健全的民主分权式管理才能推动发展。

企业行政管理选择经理制来实行专业化管理,是对权力进行有效授予,使经理们最大可能的承担责任;用人本思想和企业文化建设倡导企业内部民主管理的氛围,凝聚战斗力,使权力运用符合企业目标;在与社会环境的能动适应上发展社会交易管理,从而争取企业的生存空间。这些都是企业组织变革管理的重要性所在。作为一种管理途径和管理思维,它很少有专门的部门经常性的执行,但是几乎每一个管理者都应深信不疑并准备适时推动这样的变革。

综上所述,企业行政管理就是企业根据获取利润的核心目标,建立起一套非生产性组织体系,并在其中对非生产性资源实行有效管理的方式与手段的总和。未来企业中,庞大的生产部门随着技术革新和信息化管理日益发展而大量裁减,行政管理借助信息处理技术成倍的提高效率,其部门也呈缩小的态势。人事、财务等部门将成为一个提供信息和资金等的综合性服务体系,而不再行使层层管理的职能。以往的部门设置将为事务部所代替。企业通过信息分析确定市场需要,制定经营目标,然后成立事务部,召集相应的人才去完成目标。这些事务部是动态变化的,视任务的操作流程而定。企业行政管理更加注重动态团队管理,主要解决如何有效“集成”人才并对其进行任务期内有效管理的问题。从这个意义上讲,企业行政管理还面临着巨大的发展空间。

搜索引擎研究与开发 篇3

物理引擎是在游戏中通过为刚性物体赋予真实的物理属性的方式来计算运动、旋转和碰撞反映, 从而控制游戏中的物体运动功能的主程序。它主要是采用调整对象属性的方式来模拟刚体的行为, 这就决定了物理引擎不但继承了传统的用编程或编写脚本的方式实现的简单的“牛顿”物理运动的能力, 而且在编写包含较为复杂的物理运动 (如考虑弹力、摩擦系数等) 的游戏时效果更为显著。下面主要介绍基于安卓平台开发的水压套圈圈游戏的设计与实现, 并以此为例说明如何实现物理引擎的灵活应用。

2概述

水压套圈圈是风靡于90年代的一款掌上游戏机, 其原理是在盒子里面充满水然后放进许多小彩圈, 通过按动下面的按钮, 让水压冲起小圈, 在重力作用下使它们套在中间的小棍上, 直到所有的小圈全都套中为止。在安卓平台下, 本游戏采用Box2D物理引擎, 模拟在液态环境中的刚体碰撞行为, 并且使固体对象具备重力感应能力。界面的设计主要采用安卓常用Widget组件并加载布局完成。

3功能模块

首先在Eclipse中创建安卓工程, 命名为Box2D, 在源码文件夹下新建package, 名为com.box2d。

3.1界面实现

本游戏的界面主要有4个: 主题界面、设置界面、说明界面、 游戏界面。

3.1.1 主题界面

主题界面采用表格布局“TableLayout”。共分为5行, 第一行是一个横向循环滚动文字, 使用的是单行跑马灯控件, 第二行是TextView控件, 后面是3个按钮, 分别链接到游戏界面、设置界面和说明界面。代码如下:

跑马灯控件的设置首先要在源码文件夹src下建立“跑马灯”类, 代码如下:

然后在资源目录res的layout文件夹下创建主题类main,在main中添加跑马灯控件, 并设置滚动字条为“河北科技大学作品”。

按钮的设置也类似, 下面给出第一个按钮设置的代码, 其他剩下的两个只要修改按钮上的文字和背景图片即可, 如图1所示。

3.1.2 设置界面和说明

设置界面与主题界面类似, 首先设置布局类型, 这个界面为LynearLayout布局, 在布局中设置与主题界面相同的背景图片。界面的组件分为3组, 前两组都是RadioGroup, 用来控制难度级别和音效, 第三组只有两个普通按钮, 分别用来链接进入游戏界面和返回主题界面。第一个RadioGroup包含3个RadioButton, 分别表示初级、中级和高级3个难度级别; 第二组包含两个RadioButton, 用来表示开启背景音乐和播放背景音乐; 两个普通按钮的设置与主题界面类似, 只需修改文字和背景图片此处不做介绍。每组RadioGroup还需要有说明的文字, 所以还需要在每组RadioGroup之前先设置一个TextView, 第一个显示文字“难度设置”, 第二个显示“音效设置”。前半部分代码如下:

“音效设置”部分代码与 “难度设置”部分类似 , 不再赘述, 如图2所示。

对于说明界面只需添加几个TextView, 写上游戏说明和开发团队的介绍即可。

3.1.3 游戏界面

因为游戏界面与物理引擎所创建的物理世界关系密切, 所以该界面不在layout文件夹下配置, 直接在源码文件夹中的主函数里生成。第一步先初始化界面, 设置好背景图片; 然后配置界面的底边框, 先设置一个边框的类public void drawedge (),在其中初始化一个paint类的对象mpaint, 用来触发模拟喷水器, 不按时为蓝色, 按下时变为黄色。按钮周围用图片环绕。环绕的小图片用BitmapFactory.decodeResource () 方法来获取, 并设置小图片在屏幕底部3行循环平铺。最后设置中间的两根小棍, 方法与底边框类似 (如图3所示), 只不过这里又调用了canvas.drawBitmap (bitmap, src, dst, paint) 方法, 参数src表示要画的bitmap的区域 , dst表示要显示在屏幕上的区域。这样, 游戏界面就基本完成了。主要代码如下:

3.2功能设计与实现

功能的设计与实现是整个游戏工作量最大的部分, 也是本程序的核心。因为小圈套上木棍这个行为是一个三维的动画效果, 而Box2D是一个以二维动画来表现物体运动的物理引擎, 如何让2D的物理引擎模拟出3D动画效果是主函数设计中必须解决的问题, 也是整个程序能够运行的关键。所以在这里必须使用特殊的方法来实现, 后文以此为重心介绍主要功能模块的设计与实现。

从宏观角度来看, 可以把主程序分为4个部分: 控件的定义和初始化以及侦听、提示框和对话框的设计、刚体的定义和 控制部分、整个游戏控制流程的设计部分

3.2.1 控件的定义、 初始化和侦听

因为这一部分比较简单, 在此仅举几个比较重要的控件的例子, 其他的控件就不再具体介绍了。

3.2.1.1 定义

首先, 对于物理引擎的应用必须先定义一个物理世界并设置屏幕与现实世界的比例。要创建这个世界对象, 还需要定义一个世界的包围盒, Box2D使用包围盒来加速碰撞检测, 然后才能创建世界对象。之后最重要的是设置约束求解器iterations的迭代次数, 约束求解器用与解决模拟中的所有约束, 一次一个。定义其迭代次数是实现运行速度与质量的平衡。更少的迭 代会增加性能但降低模拟的精度:

除了上面与物理引擎相关的控件之外还有在界面设计中提到的其他控件, 这些控件也都要在主函数中定义和初始化, 比如表示“开始游戏”的按钮的定义:

public Button start;

3.2.1.2 初始化

剩下的控件只需修改类型和名称即可。

3.2.1.3 侦听

控件的侦听设计分为两块, 触摸屏幕事件侦听、点击屏幕下方按键事件侦听。

主要代码如下:

3.2.2 控制程序运行过程中提示框和对话框

这部分的设计在很多安卓教材中都会涉及, 这里只给出主要的代码和详细的注释, 至于设计的具体方法也就不再详述了。

代码:

3.2.3 刚体的定义和控制部分

这部分是主函数中对物理引擎应用的原理, 也是本程序最为核心的部分。

因为Box2D是一个二维的物理引擎, 它所表现的物体都是以二维的画面展示的, 这样一来问题就产生了。本游戏所要完成的动画效果是让圈穿过木棍, 这是一个3D的动画效果, 也就是说2D的圈是不能穿过木棍的, 怎样在不更换物理引擎的情况下模拟出3D的动画效果呢? 这就用到了下文所要介绍的一种简单方法。首先初始化一个桶状物, 在游戏的过程中让圈落入桶中, 桶的颜色是透明的, 但是其内部却着上其他颜色, 这样虽然实际上是小圈落入到桶中, 但显示给用户的是小圈穿过了木棍。原理如图4所示。

根据上述原理, 可以设计出代码的流程。首先创建小圈以及接受小圈落下的桶, 也就是显示给用户的小棍, 并定义他们的摩擦系数、密度等属性, 设置小圈初始速度为随机。然后初始化物理世界, 在并根据不同大小的手机屏幕, 自动设定小棍的位置在屏幕正中间。主要代码如下:

3.2.4 整个游戏控制流程

游戏控制流程的设计中用到了安卓程序中一个重要的工具Handler。Handler是用来解决耗时的操作运行效率与运行安全的平衡问题的工具。这里的Handler实例化对象mHandler用来配合主线程对背景音乐子线程和游戏运行子线程的运行进行更新。

最后是界面刷新, 安卓提供了两种刷新方式: 一种是Invalidate方法 , 但是Invalidate不能直接在线程中调用 , 另一种是postInvalidate (), 可以直接在线程中被调用, 本程序选择postInvalidate () 方法实现界面的刷新:

4结语

通过水压套圈圈的游戏设计与实现, 为Box2D物理引擎提供了一种简单实用而又有特点的应用方式。当然, 物理引擎还有更为复杂、更为有趣的应用方式, 在安卓游戏和其他系统平台下的游戏设计中有着更为广泛的应用。在程序的设计开发中应该多思考, 尤其注意对物理引擎的灵活运用, 让物理引擎发挥更大的作用。

摘要:详细介绍了基于安卓平台开发的水压套圈圈游戏的设计与实现,并以此为例说明如何实现物理引擎的灵活应用。

搜索引擎模糊匹配技术研究与应用 篇4

为了能更准确理解用户的搜索关键字目标, 将基于语义的模糊匹配技术应用到中文模糊识别搜索引擎中, 让用户能搜索到更多相关的信息。核心思想是根据用户输入的查询信息, 将和输入信息关键字相似的信息都纳入搜索引擎范围内, 帮助用户找到相关信息。

搜索引擎模糊匹配框架设计

基于搜索引擎自动建立相关网的过程, 相对于手动建立更方便, 词汇量更丰富, 更偏重包括当前文化背景下使用的词汇。

在相关网建立后, 需要讨论新的从相关网到相似网算法的分析和讨论。在粗略环境下, 可以使用基于距离的相似度算法进行相似网建立。

利用爬虫技术获取Internet中大量网页信息, 利用分词技术从这些网页中取出内容, 并保持原有词语出现的先后顺序, 当大量统计出现某些词和某些词离的很近, 则认为这些词之间是有关联的, 自动加入相关网中, 每个词按照只加入离的最近的相关词为原则, 递归扩散充实相关网。

在相关网的基础上, 做一个相关网的拷贝Net1, 从Net1取出一词W1, 依次算出所有和这个词的相似度, 并只取出相似度最高的一组词W2, W3, 将这个词W1和相似词W2, W3一同填充近相关网, 然后取出相似词中的第一个W2, 在Net1中重复上述动作, 加入除已加入的词以外所有的词, 在取出剩下的词重复这个动作, 这样就建立了相似网。

建立好相关网和相似网后, 在有用户输入的情况下, 就可以采用查询网状结构的算法, 遍历已经建好的两个网, 生成新的关键词用来在搜索引擎上进行精确匹配, 以扩展用户的搜索结果, 提供更智能的搜索选择。

应用实例

搜索引擎词语搜索主要是计算机处理, 搜索网页、进行网页预处理、进行词语相关分析、进行词语相似分析, 根据用户输入词语进行词语匹配, 根据匹配结果进行对应网页搜索, 对搜索出的网页进行关键字摘取, 然后展示给用户。

搜索引擎句子搜索主要是计算机处理, 搜索网页、进行网页预处理、进行句子相似分析, 根据用户输入句子进行句子匹配, 根据匹配结果进行对应网页搜索, 对搜索出的网页进行关键字摘取, 然后展示给用户。

本文使用爬虫技术建立和充实相关词语网 (以下简称相关网) 类似Word Net组织结构, 相似词语网 (以下简称相似网) 类似Word Net组织结构, 并在Word Net磨床程序思路上, 充实在基于模糊识别的搜索引擎中, 分为几个不同部分:

网页爬虫部分:搜索引擎和模糊模型的数据来源;

模糊模型部分:分析用户输入关键字并给出相似关键字集合和相关关键字集合;

相关模型网:相关模型网即仿照Word Net构建中文相关词语网;

相似模型网:根据相关模型利用前面所述计算相似度的算法构建的相似模型网;

数据库信息保存部分:保存爬虫信息结果;

用户界面部分:提供用户输入, 反馈查询结果。

模糊匹配系统实现的功能包括:

(1) 对于既定的语义树, 通过模糊匹配算法, 包括语义相似度算法以及语义相近度算法, 计算出语义树及各个节点间相似距离和相关距离, 构建出相似网和相近网, 在后续的搜索中依靠相似网和相近网不同词的距离来匹配出相关的一些信息。

(2) 根据系统所实现的功能, 进行分析:

搜索到的内容是正确的:例如搜索A, 需要搜索A相关的内容, 而不是B。

搜索到的内容是准确的:例如搜索A距离为3内容, 不能出现A距离为4的词。

搜索到的内容需要根据与被搜索内容的距离进行排列:例如B到A的距离为2, C到A的距离为3, 那么搜索A后, 反馈的是B, C。

小结

鉴于实验时间和实验设备的不足, 目前模糊匹配验证系统只能进行简单词, 少量词的模糊匹配验证, 而大数量级词, 短语以及基于网络等的模糊匹配还需要继续深入的研究。但经过实验的验证, 能说明, 本课题提出的基于搜索引起模糊匹配算法是可行的。能根据这个算法构建一个系统, 进行基于搜索引擎的相似度匹配。

新一代博客搜索引擎的开发 篇5

1 技术背景

1.1 RSS介绍

RSS是缩写词, 有着多种含义:Really Simple Syndication (真正简单的联合) 、Rich Site Summary (丰富站点摘要) 、RDF Site Summary (RDF站点摘要) 等, 它是一种网页内容聚合格式, 是一种基于XML标准、在互联网上被广泛采用的内容包装和投递协议。所有的RSS文档都遵循XML规范, 该规范发布在W3C网站上。RSS的原意是指把网站内容如标题、链接、部分内容甚至全文转换为XML的格式, 以向其它网站或用户供稿。从定义上讲, 它是一种轻量级、多用途、可扩展的元数据描述及聚合推广格式。

1.2 技术背景

互联网已经发展成为包含多种信息资源、站点遍布全球的巨大信息服务网络, 其内容包含了从科技、商业到新闻、娱乐等多种类别和形式的信息, 构成了一个异常庞大开放的分布式数据库。如何更好的利用其满足用户个性化的需求、协助用户从海量信息中找到其所需的信息, 是信息建筑师在构建网络信息检索系统时所必须考虑的问题。在RSS出现以前, 最常用的网络信息检索工具主要有搜索引擎、BBS、Telnet、FTP、www等等。然而用户在使用这些检索工具查找自己所需要的信息时, 存在检索效率低、不能满足个性化的需求、交互性差、不能反馈最新更新信息等缺陷。在网络信息检索系统构建中应用RSS技术可以很好的解决这个问题, 这也正是RSS技术主要由互联网搜索引擎巨头们所推动的原因。目前很多新闻出版商使用RSS的主要动力, 就是由于RSS技术带来的高效的搜索潜能和极高的个性化搜索功能。

2 系统总体框架结构

这里我们先提出一种分布式结构搜索引擎的总体框架结构, 它主要分为两个层次:首先是分布的各个子搜索引擎将网络分成若干区域, 每个子搜索引擎负责其区域内的信息检索和信息采集, 相互间并行地运行;其次是多个子搜索引擎之间相互通信, 从而每个子引擎都能获得全局信息, 共同组成一个分布式搜索引擎。各个子搜索引擎是并行工作的, 每个子搜索引擎负责整个网络的一部分区域, 对该区域内的网络信息进行检索, 并处理用户检索要求。通过相互通信和协作, 每个子搜索引擎都能够获得对具体搜索要求的全局搜索结果, 而且由于彼此之间只传递检索结果, 大大降低传输数据量。同时由于只需要维护主要属于自己区域的检索信息的索引数据库, 使得检索速度加快。

搜索引擎主要是由用户界面、RSS Feed抓取器、索引数据以及查询结果集处理模块。下面分别介绍各模块的功能原理 (见图1) 。

3 具体技术实现

3.1用户界面。

用户界面为用户提供一个方便的接口和系统交互, 用户界面是否简单合理是用户能够方便使用搜索引擎的关键。用户通过用户界面提交查询请求, 同时系统也通过用户界面显示查询结果。用户界面还应该提供一定的反馈机制, 使用户可以对查询的结果进行评价, 这些信息将对完善系统功能起到重要的作用。

3.2 RSS种子的抓取

如图2所示, 为了说明系统的结构, 这里仅以两个节点为例, Node A和Node B。两个节点都是专门负责采集博客网络信息的服务器。Node A从http://www.sina.com网站采集RSS种子Feed A, Node B从http://www, sohu.com网站采集RSS种子Feed B。每个节点把从RSS Feed得到的信息进行索引, 生成索引文件。在这里我们以索引XML和.NET两个关键字为例, Node A生成了Index File A, Node B生成了Index File B。对于每个节点的RSS种子, 每个Term (也就是每个被索引词的倒排索引) 都有一个由SHA-l函数生成Object ID, 同样, 每个节点也有一个Node ID, 遵循Pastry网络协议, Term应该存储在Node ID离它的Object ID最近的节点里。如图1所示的P2P环境下, Term XML可以存储在节点A, 也可以存储在节点B, 同样, Term.NET可以存储在节点B, 也可以存储在节点A。每个Term的存储位置完全是由Pastry网络协议按照就近原则决定的。

把一个博客网站的URL作为初始种子。按照预先设置好的采集深度, 对该URL所有的链接格式 (“index.html”, “rss.html”, “rss 2.html”等等) 从头到尾作不遗漏的分析搜索, 来找出页面里的RSS种子。例1为爬虫采集种子的算法。

3.3 索引数据

在本系统里, 每个标签都被看作一个文档, 标签对应着博客文章。在为每个文档建立倒排索引的时候, 我们要给每个文档添加一个document id, 我们使用标签里标签的值作为该文档的document id, 因为的值是唯一的。进行索引时有两种选择:可以索引标签指向的整个网页, 也可以只索引

分布式索引算法

3.4 查询结果集处理模块

查询结果由各个子搜索引擎返回后, 并不是马上就提交到用户界面显示, 而是需要对查询结果集进行处理, 主要包括无效链接检查、去除镜像结果和结果相关排序。搜索引擎的索引数据库中的索引信息没有能及时的更新, 导致了无效链接的产生, 所以在进行查询结果处理的时候需要对搜索引擎的查询结果进行无效链接检查和删除。同样的, 对于同一查询内容, 不同的子搜索引擎之间, 甚至在同一搜索引擎中都会产生重复的镜像内容, 需要对各个子搜索引擎的返回结果进行删除镜像内容的处理。最后将去掉无效链接和镜像内容的查询结果按照一定的策略进行相关性排序, 把最终结果提交用户界面进行显示。

结束语

提出了一种具有高实用性的基于RSS的博客搜索引擎的系统框架, 通过结合RSS数据的高结构化和搜索引擎高性能, 解决了传统搜索引擎的实时性搜索不强的缺点。随着RSS的发展, 必将有更多的信息将由RSS来描述, 基于RSS的博客搜索引擎也一定会有更大的应用范围和空间。

摘要:针对传统搜索引擎对频繁更新的博客网站实时性搜索较差的问题, 提出一种基于RSS的博客搜索引擎的系统框架, 采取分布式的思想采集和索引博客网页的RSS结构化数据, 从而达到了对频繁更新站点的实时性搜索, 也降低了搜索引擎的存储成本和数据冗余程度。

搜索引擎研究与开发 篇6

随着油田信息化建设推进, 专业数据建设已逐步走向成熟, 数据建设的最终目的在于应用, 使之变成数据源、信息源, 而搜索引擎正是实现这一目标的利器之一。因特网搜索引擎为解决油田数据共享、信息集成提供了思路, 但现有的因特网搜索引擎具有以下局限性:因特网搜索引擎的搜索对象是网页和多媒体文件, 不能对数据库进行搜索, 但油田的主要信息对象是企业数据库、门户网站、文档文件等;因特网搜索的内容和展现的信息完全开放, 但油田的数据具有很高的保密性;因特网搜索引擎展现的内容是网页和文件的原始形态, 不需要对信息源作处理, 但油田数据库中大多有意义数据是以编码形式存在的, 需要进行专门的语义处理和代码转换, 变成用户能读懂的信息。

因此基于因特网搜索引擎的基本思想, 结合油田数据管理和信息共享的特点, 提出了数字油田安全企业搜索引擎的解决方案。

二、安全企业搜索引擎的解决方案

安全企业搜索引擎是针对全文搜索技术设计的软件系统[1]。包括爬行器和搜索器两个核心功能。爬行器负责生成索引文件, 搜索器对用户输入的关键词返回相应的结果。为了实现上述两个核心功能以及数字油田对于搜索的各种特殊要求, 设计了元数据模型, 并以这三点为基础设计了搜索系统的技术架构。

2.1搜索引擎技术架构的设计。企业搜索就是为企业内外部各类非结构化数据处理提供一个综合应用平台层, 将各类信息与用户的需求直接连接, 而无需用户了解期间的任何过程信息[2]。依据安全性、时效性、扩展性的设计原则, 数字油田搜索引擎采用SES (Secure Enterprise Search是Oracle公司针对企业用户的搜索需求推出的一款安全搜索产品, 提供二次开发的接口) 作为底层支持, 总体架构如图1所示 (图中椭圆形为数据存储, 而矩形为功能模块, 箭头指向为数据流) 。

该技术架构的核心部分包括:爬行器、元模型管理、搜索服务三部分, 通过服务将这三部分结合起来。为了对搜索引擎进行管理和安全控制, 建立了元模型, 并开发了相应的管理平台。搜索服务对用户输入的关键词经过切分词组后在索引库中进行查询, 并将结果按照相关的排序后反馈给用户。私有搜索服务属于公共搜索服务的子集, 主要作用是保证数据源范围的可控和信息的安全。

2.2爬行器的工作原理。索引器的主要作用是信息采集, 通过“网络蜘蛛”的技术, 根据预先选定的范围, 自动搜集网页、数据库、文件系统中的信息。数据采集的过程称为“爬行”。通过对爬行采集的信息进行句法分析, 按词汇建立索引库, 供搜索系统查询, 这是建立搜索引擎的基础。

图2表示爬行器工作的原理图。爬行器的工作过程是通过SES提供的相应接口开发出通用爬行器插件对各种类型的信息载体提取文本并转换为文本流, 经过对文本流进行文本分析实现切分词组, 存储词组在文本中出现的次数和位置。预处理阶段主要解决的问题是全库采集和增量爬行问题, 而增量爬行的模式可以采用被动捕获和主动提交两种策略, 根据油田数据存在的介质, 设计了针对FTP、DOMINO、Oracle、FTP、网站、SPS、CMS进行信息索引的爬行器类型。

2.3搜索器的工作原理。搜索器根据用户提供的关键字, 在索引库中查找信息, 包括请求处理和信息获取两部分, 请求处理包括:切词、主题搜索和查询调度。信息获取是按照SES的规则排序和用户的使用习惯输出查询结果。核心是面向主题的搜索, 主题搜索是对搜索的深化应用, 能够将无序的搜索结果信息转换为有序的知识, 提高搜索质量, 满足特定用户的需求, 本文设计的搜索引擎考虑到主题分类的明确性、数据的全面性等因素将主题控制在数据库类型的搜索源和Domino类型数据源范围内。物理搜索源是以数据库特征字段为粒度建立的SES的搜索源, 同时以一对一的关系建立SES搜索源组, 从SES搜索源中筛选出主题分组作为主题计算的输入。主题搜索的原理图如图3所示。

主题源组需要满足两个条件:第一, 主题是明确的, 例如科技文档库, 项目名称字段“xmmc”就明确属于项目主题;第二, 搜索源语义是精确的, 例如, 项目文档字段“xmwd”虽然主题明确, 但是该字段是一个大对象字段, 无法从大量的文本中识别出来项目名称等对象。选定某一主题后, 可以将相关主题实例取出, 将搜索结果按照适当的算法聚类和展示, 提高用户的检索效率。

三、结论

本文设计的搜索引擎能够满足企业异构数据源数据的全文检索功能, 在大庆油田部分采油厂进行了应用, 提高了资源的利用率, 节约了生产和科研时间, 应用效果良好。在技术实现上, 提出了安全企业搜索引擎的技术架构, 保证了搜索引擎具有良好的可扩展性, 也为实现企业搜索安全体系框架提供了依据和指导。

摘要:随着数字油田的发展, 数据和信息越来越丰富, 用户获取信息的难度也随之增加, 通过统一入口检索到企业内的相关信息成为管理人员和科研人员关注的焦点, 搜索服务已成为企业迫切需要的服务之一。本文针对企业内部数据多源异构化、安全保密性高、关联性强等特点提出了安全企业搜索引擎技术框架, 该框架能够覆盖企业内部结构化和非结构化数据源;提供满意的搜索结果和完整的业务视图。论文提出了可行的解决方案, 并设计和实现了搜索服务, 旨在说明应用该搜索引擎能够打破各种信息共享的壁垒, 实现跨专业、跨部门的业务集成, 最终达到知识共享的目的。

关键词:数字油田,搜索引擎,业务集成,知识共享

参考文献

[1]林乐然, 陈德龙.基于云计算的分布式企业搜索引擎研究[J].电脑知识与技术, 2010, 33 (5) :9429-9430, 9434.

[2]武骏, 陈立娜.利用企业搜索平台挖掘企业知识的长尾价值[J].实践研究, 2010, 33 (7) :79-81.

[3]CHAN M, CHEN H.A Machine Learning Approach to WebPage Filtering Using Content and Structure Analysis[J].Decision SupportSystems, 2007, 44 (2) :482-494.

搜索引擎研究与开发 篇7

近年来, 随着数字化教育浪潮的不断推进, 我国在教育资源建设方面已经取得了巨大的成就, 各类教育资源的数量巨大且呈现几何级数增长。随着搜索引擎技术的发展, 通用搜索引擎的功能变得日益强大, 取得了很大的成功, 但其仍有局限性, 如搜索的深度不够, 且查准率低、时效性差。尤其是现有的通用搜索引擎的搜索方式是采用关键字的形式实现, 没有根据用户的个体差异满足用户的个性化需求, 其返回结果往往不令人满意。

基于语义的搜索引擎是指搜索引擎的工作不再拘泥于用户输入的关键词, 而是能够对这些关键词进行语义推理。通过在语义的层面上把文档中关键词和其映射的概念进行关联, 可以部分解决文档语义理解的问题。语义搜索对网页文档信息所蕴含的语义信息进行充分挖掘, 同时把用户的检索要求转换成相应的语义表示, 基于领域本体对其进行辨别和推理, 从语义层面理解用户查询, 并将基于本体推理的结果返回给用户。

本文从基础教育网络资源搜索的需求考虑, 在开源技术Hadoop和Nutch的基础上设计了面向基础教育领域的语义垂直搜索引擎, 并对如何实现语义搜索的关键技术进行了重点研究。

2 系统框架设计

利用搭建在Hadoop分布式系统上的Nutch开源软件进行面向基础教育的网络资源爬行, 过滤掉与基础教育无关的信息, 将爬行的内容进行解析、去重后存入分布式数据库Hbase中, 接着利用人工构建及自动抽取技术实现教育资源本体库, 再基于领域本体库实现对用户查询内容的语义检索, 从而使得搜集信息具有“专、精、深”的特点, 检索内容准确、可靠、快速且更新及时。该系统框架设计如图1所示:

3 关键技术研究

(1) 种子网站的选取和过滤

因为该搜索引擎是针对基础教育这一特定主题, 为了是搜索站点的范围更具有代表性, 只爬取和主题相关的URL, 需要根据一定的策略算法对“网络蜘蛛”程序的初次爬行网址做一些过滤。这一过程借助Web-Harvest开源软件对intute、DMOZ等开放式分类目录中的特定领域站点列表进行抽取, 形成站点描述XML文件。为了获得更多的种子站点, 可以使用能够代表领域特征的语词, 通过Yahoo!Search API进行检索来获得更多的候选站点URL。经过上述途径获得的候选站点, 需要根据Page Rank值、连通情况指标及主题相关度预测算法进行初步过滤, 将影响力不大、难以访问及相关度不高的站点排除, 最后再通过人工方式进一步核查和分类, 最终获得高质量的站点种子。

(2) 网页自动去噪和去重

通过Nutch抓取的网页, 除含有有效的正文内容外, 还携带有广告信息、客户端运行代码、版权声明、栏目设置等噪音信息。为了给后续的信息抽取、分析步骤提供高质量语料, 减少噪音信息的干扰。设计在网页抓取阶段根据噪音信息的一般特征设置网页去噪模块, 对网页内容进行过滤。网页去重功能保证了抓取内容数据库中存储的网页是不重复的, 也可以识别新发布的页面。

(3) 搭建分布式系统

基于开源云平台Hadoop搭建分布式系统, 利用分布式平台提高信息抓取和信息检索的效率。充分利用Nutch面向接口的插件技术, 对关键模块进行封装, 使系统具有高度重用性, 从而为今后该系统的扩展打下良好基础。

(4) 教育资源本体的构建

随着语义网 (Semantic Web) 研究的不断深入和实践的不断发展, 特别是XML和RDF技术的日趋成熟, 以及W3C认定OWL语言后, 基于语义网的本体论为有效地开发、管理和使用教育资源提供了解决方法。

目前还不存在一种被公认的本体构建的标准框架, 当前被广泛接受的是Gruber于1995年提出的本体构建五项原则, 分别是:明确性、一致性、可扩展性、最少约束性和完整性。上述五项原则给出了构造领域本体的基本思路, 但不足之处是它们反映的内容较抽象, 在具体实践中难以把握, 为此研究人员从不同的角度提出了众多本体构建方法。

首先, 根据教育领域的各种权威性的词表来构建领域本体, 既可以根据词表中概念间存在的简单语义关系构建轻量级的本体, 这种本体语义简单但优点是容易通过编写程序实现大批量的自动转化。可以选择《教育资源建设技术规范》 (CELTS-41) 作为元数据方案, 基于此定义出教育资源本体的核心类。具体实现可使用Protégé软件进行本体的构造, 使用Protégé提供的OWLviz Tal插件, 这个插件可以通过图形的形式显示构建的教育资源本体中各子类的层次关系。在建立了教育领域本体的核心类之后, 要确定本体概念间的属性关系。Protégé中到的属性关系包括两种属性:关系属性与数值属性。关系属性表示概念间的逻辑关系, 如前驱关系 (has Precursor) 、后继关系 (has Successor) 、包含关系 (is_part_of) 等, 关系属性有定义域与值域, 即指明这一关系的方向。本体的类、关系属性和数字属性设计完成后, 教育资源领域本体的总体架构设计就完成了, 之后要录入教育资源信息, 即实例信息数据。

在已有的本体库基础上, 设计了基于本体的自适应Web信息抽取平台的模型视图, 该模型视图如图2所示:

其中, Web领域资源发现模块:该模块的功能是实现面向不同网页类型的网络爬虫, 定向获取与教育领域相关的资源, 通过机器学习技术, 对所获得的网页数据进行过滤, 将获得到的教育相关数据提交给基于本体的自适应信息抽取模块。

基于本体的自适应Web信息抽取模块:接收来自Web领域资源发现模块的信息, 结合相应的抽取任务描述信息, 调用相应的抽取方法, 完成不同类型数据的抽取工作。

输出模块:对经过验证后的输出结果进行输出, 写入特定的数据库或知识库中, 同时建立将抽取结果与相应的本体之间的关系, 实现本体的扩充。

本体知识模块:该模块包含与待抽取目标相关的本体知识, 涉及不同的教育领域本体、数据库描述本体、交互关系本体以及各种知识库资源等。

(5) 本体数据及实例数据存储模型

RDF Schema可视为一种简单的本体语言, 但是它过于简单, 描述能力较弱, 难以表示复杂的领域知识, 因此需要对其进行扩展, Web本体描述语言OWL是对RDF Schema的一种扩展。

现有的OWL数据管理系统大都采用XML文件或传统的关系型数据库来存储OWL数据, 这种方式已难以高效地管理海量OWL数据。本文结合关系型OWL数据存储模式以及分布式系统平台, 提出一种基于分布式数据库HBase的OWL数据存储模型构思, 进一步设计该存储模型上的基于Map Reduce的SPARQL查询算法。

4 结束语

本文还只是初步设计了一个的教育资源语义搜索引擎框架, 在很多关键技术方面还有待进一步探究和改进。相信在不久的将来, 特别是随着本体构建技术的不断健全, 语义检索的应用范围会愈来愈广。

摘要:本文从教育网络资源搜索的需求考虑, 在开源技术Hadoop和Nutch的基础上设计了一个面向基础教育领域的基于本体的语义搜索引擎系统框架。最后, 本文对如何实现语义搜索的关键技术进行了重点研究, 具有一定的指导意义和参考价值。

基于搜索引擎的邮址搜集软件开发 篇8

随着互联网信息数据量迅猛增长, 利用搜索引擎检索到的结果中往往混杂许多无用的信息, 不能满足用户精准提取信息的需求。因此, 把搜索引擎与信息提取技术结合起来, 开发出了一种基于搜索引擎的邮址搜集软件。

简单来说, 邮址搜集软件是建立在现有的通用搜索引擎如百度、谷歌等基础上, 提供对这些搜索引擎的调用访问服务。用户在前端界面上向邮址搜集软件提交查询请求之后, 由邮址搜集软件完成向对应搜索引擎的查询服务, 获取搜索返回结果页面并进行解析和匹配提取, 最终将结果返回给用户, 并呈现在邮址搜集软件的界面上。

开发的邮址搜集软件使用简单方便, 在软件界面上输入待搜集邮址的关键字, 并选定搜索引擎, 再设置一下搜索页面范围、搜索深度等可选设置, 即可在短时间内获取大量与输入关键词相关的邮箱地址。

2 关键技术

邮址搜集软件的关键技术是如何获取搜索结果页面链接并提取相关邮址信息。用图1的流程图清晰地展示了邮址提取的过程。

以选定百度搜索引擎为例, 逐步解析邮址搜索软件中的关键技术。

关键技术一: 拼接初始链接, 获取分页链接

首先, 在百度搜索引擎中输入不同关键字, 观察分析返回结果第一页的链接地址, 发现除了关键字部分发生变化外, 其他的结构都是完全相同的。因而可以总结出百度关键字搜索初始链接如下:

初始链接: http://www.baidu.com/baidu?tn=baidu&wd=关键字

然后, 在百度搜索引擎中输入关键词“apple”, 返回的初始链接页面分页部分 (如图2所示) 对应的HTML源码如图3所示。

通过观察分析上面链接地址的规律, 不难发现, 每一页链接地址的差别在于pn的值的变化, 其他的结构都是完全相同的。接着发现, 第二页的pn值是10, 第三页的pn值是20, 那么第i页的pn值就是 (i-1) *10。得到了这个规律, 结合用户输入的搜索页面范围就可以轻松获取分页链接, 也就是下面的公式:

分页链接: http://www.baidu.com/baidu?tn=baidu&wd=关键字 &pn=页面编号

其中页面编码= (页码-1) *10, 页码即如图2所示的百度分页页码。

相关程序代码如下:

关键技术二: 获取页面深层链接, 即深度搜索技术

图4展示了邮址搜集软件获取深层链接的规则, 为了便于理解, 用一个金字塔结构进行描述。通过第一层获取到一个初始链接 (搜索结果第一页), 然后根据用户搜索页面范围的设置, 拼接出了分页链接, 到达了金字塔尖的第②层, 针对②获取到的分页链接, 在第③层用HTMLParser解析包解析过滤,获取到百度搜索引擎返回的结果页面链接, 完成深度为2的链接获取。如果用户设置的搜索深度值大于2, 则会继续用HTMLParser解析结果链接获取页面深层链接 , 到达金字塔第④层, 并继续解析, 直到达到用户的深度要求。

关键技术三: 通过HTMLParser解析深层链接

HTMLParser[1]是一个对现有HTML进行快速实时解析的工具。它是一个开源的项目, 通过它可以准确高效地对HTML文本中的节点、数据进行分析处理, 并很容易地对网页的内容进行分析、过滤和抓取。

在图4金字塔的第③层获取搜索引擎返回的结果页面链接 , 以及在第 ④层获取 更深层链 接时 , 都需要用 到HTMLParser解析包, 主要是利用Filter包的功能。

第③层获取搜索引擎返回的结果页面链接的具体的实现方法: 首先利用收集到的分页链接创建Parser实例, 创建HtmlPage实例, 遍历html节点元素, 获取body中的节点, 然后用extractAllNodesThatMatch函数提取出需要的节点并存入nodelist数组, 之后利用循环语句遍历nodelist, 提取其第一个子链接节点, 即是需要的返回结果链接。相关程序代码如下:

第④层获取页面深层链接的具体的实现方法: 首先建立与传入URL的连接, 设置相关参数, 然后创建parser实例, 创建HtmlPage实例, 遍历html节点元素, 获取body中的节点,接着用extractAllNodesThatMatch函数提取出标签为a (链接)的节点, 并存入nodelist数组, 即获得了页面的深层链接。相关程序代码如下:

关键技术四: 用正则表达式匹配页面源码获取邮址

在获取到所有的链接, 用HtmlParser解析过滤之后, 接下来就要开始对每个页面进行邮箱地址匹配工作。

正则表达式[2,3]是用一个字符串来描述一个特征, 然后用它来验证另外一个字符串是否跟这个特征匹配, 一般用在模式匹配和数据验证方面。因为邮箱地址有其固定的特征, 所以用正则表达式来匹配邮箱地址是非常合适的。而用于匹配邮址的正则表达式有很多, 所以选择合适的正则表达式是重中之重。经测试, 选用不同的正则表达式匹配到的邮址也有所差异。通过多次测试比较, 采用 w+ ([-+.] w+) *@w+ ([-.] w+) *.w+ ([-.] w+) * 正则表达式匹配邮址获取的结果比较理想。

相关程序代码如下:

3 抓取邮址结果

选定百度搜索引擎, 设置搜索页面范围1-10页, 搜索深度为2, 输入关键字: 微生物mail, 搜索到的结果如图5所示。

4 结语

上一篇:农产品加工技术下一篇:液压阻尼