开源软件获取与搜索系统的实现方法技术方案

技术编号:7935459 阅读:190 留言:0更新日期:2012-11-01 05:14
一种开源软件获取与搜索系统的实现方法,包括:在企业级服务器上配置关系数据库管理软件,使得上层应用程序对关系数据库进行调用时能使业务层代码能够以对象的方式访问和更新数据库里的信息;接收用户的输入定义,确定一定数目的已知URL地址的开源社区集合,通过爬虫抓取开源社区中的开源软件主页;从爬取到的页面中抽取开源软件领域的信息即开源属性;对跨社区项目信息进行整合,当来自不同社区的项目具有不同的属性时,取属性并集,同时保存不同项目之间的依赖关系;对获取的开源属性建立倒排索引;响应于用户搜索输入或预定义的排名机制,对需要展现的开源项目进行排序并显示,从而实现对开源软件项目的获取与搜索。

【技术实现步骤摘要】

本专利技术涉及一种,特别是在跨多个开源社区的环境下,一种基于定向网络爬虫、信息抽取的开源软件搜索系统的构造方法。
技术介绍
近年来,国内外开源软件运动取得了蓬勃发展,已经形成众多拥有大量开发人员、开源项目和开源社区的软件开发和应用的开源软件生态系统。目前开源软件业界有如下发展趋势I.开源项目和开发人员数量庞大并逐年稳定增长;2.少数优秀的开源项目发展迅速并且得到广泛应用; 3.多数开源项目处于较低的发展水平且处于缓慢发展状态;这些特征使得从海量开源软件项目中发现和选择高质量且满足特定需求的开源软件成为急需解决问题。传统搜索引擎由于其缺乏针对性,搜索结果中有效信息含量不高,因此难以应对这样的需求。开源软件社区作为开源软件的托管平台,其页面有着丰富的开源项目描述信息,对于开源软件的共享、评价和选择具有重要价值。开源社区大多集成了针对社区内开源软件的搜索引擎和条件选择服务,然而要在全球范围内选择和查找开源软件,综合跨社区的软件信息,构建跨社区的开源软件搜索引擎势在必行。近年来,国内外针对跨社区的开源软件页面数据收集开展了大量的研究和实践。美国Syracuse大学的FLOSSmole项目在该领域做出了突出成绩。通过使用275个网络爬虫,该项目从20多个社区中爬取了近500,000个开源项目的页面数据。但由于该工作只进行了数据的搜集,对外仅提供sql查询接口和sql数据包的下载,而并没有提供数据的综合、展现、搜索等功能,因此并不能帮助人们搜索与获取软件。国内面向开源软件的搜索引擎研究还处于起步阶段,其中比较有影响力的包括开源中国社区、CSDN开源社区、中国Linux社区等。开源中国社区中的开源软件信息主要来自用户人工编辑,数目和质量上都有明显的局限性;CSDN社区中的开源资源主要是用户自行共享上传的工具包或代码库;来源混杂,格式不统一,描述不完备;而Linux社区的开源软件主要局限在Linux系统相关的包和工具。总的来说,当前这些社区缺乏一个涵盖面广,数据全面,格式统一的开源软件信息库,以及基于该信息库的一种为用户查询和选择开源软件提供推荐和帮助的搜索引擎技术。
技术实现思路
本专利技术要解决的问题是针对现有技术在跨社区信息获取和信息综合展现方面的不足,提出一种开源软件搜索系统的实现方法,使得能够广泛搜集多个社区的开源软件信息,为预期用户提供软件查找和推荐服务。本专利技术的技术方案包括以下步骤步骤I、搭建数据服务。在企业级服务器上配置关系数据库管理软件,搭建关系与对象映射框架,使得上层应用程序对关系数据库进行调用时能使业务层代码能够以对象的方式访问和更新数据库里的信息。步骤2、网页获取。接收用户的输入定义,确定一定数目的已知URL地址的开源社区集合,通过爬虫抓取开源社区中的开源软件主页,将开源项目的爬取分为开源项目列表页爬取和开源项目主页爬取两个阶段。步骤3、开源属性抽取。从爬取到的页面中抽取开源软件领域的信息即开源属性,如项目编程语言、证书、运行环境、开发状态、注册时间、最新发布时间、下载次数、主页链接坐寸o步骤4、对跨社区项目信息进行整合,当来自不同社区的项目具有不同的属性时,取属性并集;同时保存不同项目之间的依赖关系; 步骤5、对获取的开源属性建立倒排索引,其中的每一项都包括一个属性值和具有该属性值的各记录的地址,由属性值来确定记录的位置,而非由记录来确定属性值。步骤6、响应于用户搜索输入或预定义的排名机制,对需要展现的开源项目进行排序并显示。进一步地,步骤2可以下列方式实现步骤21、根据社区的项目主页URL模板进行匹配,抽取出项目主页URL存放到数据库,对不断变化的社区开源项目主页构成情况进行快照。步骤22、是爬取开源项目主页。网页爬虫不断从数据库中取出项目主页URL进行定向爬取,将爬取到的完整HTML页面文本保存到数据库。更为具体地,步骤3通过下列步骤进行。步骤31、模板探测。发现每个开源社区用于显示开源属性的网页模板,可以是HTML树中的标签路径,也可以是HTML文本中的正则表达式,作为抽取开源属性的规则。具体来说有两种获取方式。步骤311、基于人工观察的方法。通过观察来自开源社区的少量网页样本,发现各个开源属性所在的页面位置或其出现的正则表达式模式。步骤312、基于种子集合的方法。获取开源属性的可列属性值,使用字符串相似度匹配算法,自动的在网页集合中发现开源属性值所在标签路径,采用最大支持度方法(即在某位置具有最高匹配次数则认为在此具有最大支持度)筛选出唯一的网页模板。其中,所述字符串的相似度匹配可以通过两字符串对应q-gram集合的雅加达(Jaccard)系数作为两字符串匹配度数值,当该数值若高于预定义的某阈值则认为匹配。步骤32、标签定位。通过已获取的模板定位到开源属性值的HTML标签。如果确定的模版是通过人工观察并确定的正则表达式,则进行步骤321基于正则表达式的定位方法。使用正则表达式定位规则在目标网页中发现属性值标签节点;如果确定的模版是通过种子集合方法确定出的标签路径,则进行步骤322基于标签路径的定位方法,根据html页面的文档对象模型(DOM)树形结构,将每个标签位置表示为从页面根节点 html 到属性值所在节点的标签路径,借助支持该路径的网页解析工具(如D0M4J)进行标签定位与获取,从而获取属性值对应的文本标签。进一步地,所述步骤6中,如果接收到用户的搜索输入,则通过计算用户输入的关键字与倒排索引数据集合之间的字符串匹配情况,计算关键字与数据集合中软件项目的结果的相关度进行排序;如果没有接收到用户搜索输入,则依据项目的开源参与程度和信息完备程度定义的项目排名机制,项目进行排序与展示。进一步地,所述项目的开源参与程度由一个项目所用于托管的社区数,其所关联的其他开源项目数来量化;所述信息完备程度由项目的开源属性个数来量化。最终开发相应的用户交互界面,负责接收来自用户输入,同时负责接收来自搜索引擎的排序结果,对开源社区中的软件项目进行组织和展示。附图说明图I为本专利技术跨社区开源软件搜索系统实现方法的流程图;图2为根据本专利技术的实施例的获取不同社区开源软件项目的流程图。图3为根据本专利技术的实施例的对获取后的开源软件项目进行管理和组织的流程图。 具体实施例方式如图I所示,为开源软件获取与搜索系统及方法实现的流程图,具体实施以下步骤步骤I、搭建数据服务。开源软件信息库具有数据量大(> 100GB),更新频繁,并发查询处理能力强,例如在互联网上提供面向海量用户的访问服务等方面的要求。因此需要采用企业级的高效的数据库管理软件来搭建数据服务,在本专利技术中将数据服务部署在企业级刀片服务器上,具有8核CPU,内存32GB,硬盘2TB。可以使用关系数据库或面向对象数据库,当使用关系数据库时,还需要搭建关系与对象映射框架,以方便上层应用程序对关系数据库进行调用,使业务层代码能够以对象的方式访问和更新数据库里的信息。步骤2、网页获取。通过爬虫抓取开源社区中的开源软件主页,由于目标页面URL集合是已知的,因此可以对传统通用爬虫的爬取方式进行修改,去除其中如URL合法性判断,新URL发现等不适用的常规部件,而使用由人工事先对每个开源社区预定义,进而确定需要爬取的URL的生成方法。基于开源社区中项目不断增加的特征本文档来自技高网
...

【技术保护点】
一种开源软件获取与搜索系统的实现方法,包括下列步骤:步骤1、搭建数据服务,在企业级服务器上配置关系数据库管理软件,搭建关系与对象映射框架,使得上层应用程序对关系数据库进行调用时能使业务层代码能够以对象的方式访问和更新数据库里的信息;步骤2、网页获取,接收用户的输入定义,确定一定数目的已知URL地址的开源社区集合,通过爬虫抓取开源社区中的开源软件主页,将开源项目的爬取分为开源项目列表页爬取和开源项目主页爬取两个阶段。步骤3、开源属性抽取,从爬取到的页面中抽取开源软件领域的信息即开源属性;步骤4、对跨社区项目信息进行整合,当来自不同社区的项目具有不同的属性时,取属性并集;同时保存不同项目之间的依赖关系;步骤5、对获取的开源属性建立倒排索引,其中的每一项都包括一个属性值和具有该属性值的各记录的地址,由属性值来确定记录的位置,而非由记录来确定属性值。步骤6、响应于用户搜索输入或预定义的排名机制,对需要展现的开源项目进行排序并显示。

【技术特征摘要】

【专利技术属性】
技术研发人员:王怀民李翔尹刚朱沿旭史殿习王涛袁霖滕猛刘惠余跃
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1