[发明专利]一种基于语义的代码搜索方法在审

专利信息
申请号: 201010612101.6 申请日: 2010-12-29
公开(公告)号: CN102063488A 公开(公告)日: 2011-05-18
发明(设计)人: 钱巨;黄志球;刘通;洪宏 申请(专利权)人: 南京航空航天大学
主分类号: G06F17/30 分类号: G06F17/30
代理公司: 北京市德权律师事务所 11302 代理人: 王建国
地址: 210016 江*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 语义 代码 搜索 方法
【说明书】:

技术领域

发明涉及一种代码搜索方法,尤其涉及一种基于语义的代码搜索方法。

背景技术

目前的代码搜索引擎例如Google code search、Koders主要是对网络中的一些开源项目的文件进行检索,忽略了大型blog或论坛中的代码片段,导致搜索的范围比较狭隘。它们主要采用全文索引技术对公开发布的代码文件进行索引,从而对所搜索的代码进行快速定位,但是他们没有对代码的结构化信息进行识别,不能精确的定位类名、方法名、变量等描述信息,使得搜索结果不够准确。

当前一些主流的搜索引擎存在以下缺陷:1、代码搜索范围小,仅对网络中一些开源项目的文件进行检索;2、搜索结果不准确,因为检索的方式是全文检索,无法利用代码的结构化信息(如类名、方法名、变量名)进行检索。因此现有搜索技术存在着仅依赖关键字、搜索范围局限等不足。

发明内容

为了解决上述问题中的不足之处,本发明提供了一种基于语义的代码搜索方法。

为解决以上技术问题,本发明采用的技术方案是:一种基于语义的代码搜索方法,方法的实现所采用的系统分为数据收集模块、数据分析模块、数据排序模块、用户交互模块;

数据收集模块中的爬虫工具JoBo可以在配置文件中预先设定一些网站地址,爬虫工具JoBo再从预先设定的论坛和博客上抓取代码源,达到最快最有效的抓取网页;

爬虫工具JoBo抓取到的代码源,采用开源工具JDT中的抽象语法树AST框架来进行语义分析;

数据排序模块可以根据用户输入的关键字匹配、分析得到相应的搜索结果后,综合考虑五方面的因素:关键字在代码中出现的次数、注释部分在代码中所占的比例、代码长度是否在上下界之内、是否提供了代码出处的链接、与用户喜好的匹配程度;每一因素的取值乘上相应的权重后求和得出代码的综合评分,通过数据排序将搜索结果按照分值从高到底依次排列展现给用户。

本发明一方面调用主流的代码搜索引擎获得排名靠前的搜索结果,另一方面利用网络爬虫从大型的blog或论坛中抓取代码片段,增加了代码的搜索量,使得搜索结果更加丰富;而对于网络爬虫爬出来的文件应用Java开发工具(JDT)中的抽象语法树(AST)进行解析,给代码标注上了类名、方法名、变量等语义信息,使得用户可以针对这些描述信息进行搜索,提高了搜索结果的查准率;对于最后展现出来的搜索结果用户可以进行投票、添加标签等操作,这将有利于搜索结果排序的优化。

本发明利用了现有最好的Google code、Koders等搜索引擎,并在此基础上做了相应的扩展,如语义信息识别、排序等;通过配置爬虫定义搜索范围,由此提高搜索的效率和查准的精度;考虑用户喜好,依照代码质量若干因素的综合评分对搜索结果进行排序。

附图说明

下面结合附图和具体实施方式对本发明作进一步详细的说明。

图1为本发明的系统结构示意图。

图2为SearchCall类图。

图3为DataAnalysis类图。

图4为ResultItem类图。

图5为JoBo网页爬虫搜索流程图。

ICS:ICodeSearch,代码搜索引擎软件。

JoBo:爬虫程序的一种。

JDT Java:开发工具(Java development tools),用于解析java文件的结构。

Ontology:本体,是共享概念模型的形式化规范说明

具体实施方式

本发明所采用的系统分为四大模块:数据收集模块(Data Collection)、数据分析模块(Data Analysis)、数据排序模块(Data Sort)、用户交互模块(User Interact ion)。

下面分别阐述每一模块的实现方案:

1、数据收集模块

ICS数据源的获取有两个途径:一是调用目前市场主流的代码搜索引擎Google Code Search和Koders,根据用户输入的关键字获取前10页的搜索结果(为了提高搜索效率,在对查准率影响不大的前提下系统截取前十页作为搜索结果);二是利用爬虫工具JoBo,在配置文件中预先设定一些网站地址,例如CSDN、CVS知识库、Subversion知识库等,在系统空闲的时刻爬虫会自动搜寻该网站下的代码源上传至服务器。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京航空航天大学,未经南京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201010612101.6/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top