[发明专利]一种基于语义的代码搜索方法在审
| 申请号: | 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知识库等,在系统空闲的时刻爬虫会自动搜寻该网站下的代码源上传至服务器。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京航空航天大学,未经南京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010612101.6/2.html,转载请声明来源钻瓜专利网。





