CN111309853A - 一种基于结构化信息的代码搜索方法 - Google Patents

一种基于结构化信息的代码搜索方法 Download PDF

Info

Publication number
CN111309853A
CN111309853A CN201910828478.6A CN201910828478A CN111309853A CN 111309853 A CN111309853 A CN 111309853A CN 201910828478 A CN201910828478 A CN 201910828478A CN 111309853 A CN111309853 A CN 111309853A
Authority
CN
China
Prior art keywords
search
code
information
structured information
synonyms
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910828478.6A
Other languages
English (en)
Other versions
CN111309853B (zh
Inventor
李必信
张理想
孔祥龙
王璐璐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Southeast University
Original Assignee
Southeast University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Southeast University filed Critical Southeast University
Priority to CN201910828478.6A priority Critical patent/CN111309853B/zh
Publication of CN111309853A publication Critical patent/CN111309853A/zh
Application granted granted Critical
Publication of CN111309853B publication Critical patent/CN111309853B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/3332Query translation
    • G06F16/3334Selection or weighting of terms from queries, including natural language queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/3332Query translation
    • G06F16/3335Syntactic pre-processing, e.g. stopword elimination, stemming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/3332Query translation
    • G06F16/3338Query expansion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/338Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开一种基于结构化信息的代码搜索方法,通过静态解析源代码获取结构化信息和统计信息来计算代码元素的权重,构建结构化代码库;在输入搜索语句时,利用自然语言处理方法提取关键词,同时获取关键词的同义词与近义词,构建多个查询条件;合并搜索条件的返回结果作为最终的返回结果。本发明充分挖掘静态代码的结构化信息,同时自然语言处理方式来深度挖掘搜索语句和含义,过程清晰明了,来源广泛稳定,拓展成本低廉,具有较高的工业应用价值。

Description

一种基于结构化信息的代码搜索方法
技术领域
本发明涉及一种基于结构化信息的代码搜索方法,属于代码搜索技术领域。
背景技术
代码单元是一个功能实现的程序片段,本发明中将一个方法体称之为代码单元,软件组件通过代码单元向外部提供功能支持,其他模块在需要实现某个功能时可以调 用现有的的代码单元,在实际生产中在不同项目中相同功能实现的方式和过程都有一 定的区别。在项目开发过程中快速实现某个功能模块需要查找大量的开发文档和阅读 海量的代码,开发人员在进度的约束下实现这些功能,将面临巨大的挑战。代码单元 的快速复用,稍微修改后快速重用,可以加快开发进度和提高生产效率。在任务时间 进度的限制下,快速地获取相关功能的样例代码,不仅可以减少文档和代码的阅读压 力,加快开发进度,同时有足够的时间来提高代码质量。
针对这一问题,目前标注方式主要有人工标注,博客论坛第三方标注,无标注纯文本匹配,本发明从源代码中获取结构化信息,通过实际项目和JDK源码来计算结构 化信息中元素的权重,将带有权重的结构化信息作为代码单元的标签。获取搜索语句 中的关键词,同时获取关键词的同义词或近义词,利用不同关键词的同义词或近义词 产生多个不同的搜索条件。本发明减少了标注对外部资源的依赖,增加了工业应用价 值,利用重构搜索条件来提高搜索结果的准确度,最后利用结构化信息合并结果并微 调。相应的,提出基于结构化信息的代码搜索方法结果的准确度,召回率,F1值。根 据上述三个指标来评判搜索结果。
发明内容
本发明正式针对现有技术存在的问题,提供一种基于结构化信息的代码搜索方法, 该方法通过静态地解析源代码获取结构化信息,并且利用实际项目来计算结构化信息元素的权重,将带权重的结构化信息作为代码单元的标签。在此基础上,重构搜索条 件来提高搜索准确度。
为了达到上述目的,本发明的技术方案如下,一种基于结构化信息的代码搜索方法,包括如下步骤:
步骤1)获取结构化信息,静态获取Java源代码的抽象语法树,从中提取结构化 信息,从中获取代码单元的方法体信息和方法体内元素使用信息,提取JDK(JavaDevelopment Kit)源码和项目源码中的类型和类型的方法信息;
步骤2)计算元素权重,利用步骤1)中的类型信息,统计结构化信息元素在现有 的类型中的使用情况,并且计算每个元素的权重,构建结构化代码库;
步骤3)分析搜索语句,通过自然语言处理来获取搜索语句中的关键词,同时获 取关键词相似度最高的2个同义词或近义词;
步骤4)获取多条同义或近义的搜索条件,组合步骤3)中多个关键词的同义词或近义词,产生多条具有相似语义的搜索条件;
步骤5)返回搜索结果,执行多个搜索条件获得返回结果,获取搜索条件和结构 化信息的交集,并求交集元素权重之和,再利用结构化信息中控制流,变量名来调整结 果。
本发明方法的优选方案中,步骤1)中通过解析源代码来获取结构化信息,基于Java 语言的特性,代码中主要分为类型,方法,其他。类型表示某类对象的特征,方法表示实现某一功能的代码片段。其他表示在代码单元中起到逻辑控制的作用。基于结构的角度,一类为代码单元即方法的结构信息,称之为块信息,其中包含修饰符,方法名,返 回类型,参数类型。
方法体内的涉及到的类型,称之为类型,方法体内调用对象的方法,称之为被调用方法, 方法体内所有使用的名称,称之为变量名,控制方法内的业务逻辑的关键字,称之为控 制流。基于此,生成结构化信息的方法的具体流程为:
a)导入源代码生成抽象语法树。
b)提取JDK源码和项目源代码中所有的类型和类型的方法信息,一个方法体视为一个代码单元,获取方法体的返回值,方法名,修饰符,参数类型,全限定性路径名, 称之为块信息。获取方法体内所有的类型,被调用的方法,控制流,变量名。
本发明方法的优选方案中,步骤2)中计算元素权重的方法的具体流程为:
对于步骤1)生成的JDK源码和项目源码的类型和方法信息,利用实际项目中代码类型和方法的使用情况,对现有的类型和方法进行投票,类型或者方法被使用的次数。
对于步骤2)采取1957年Luhn,Hans Peter用到的TF,IDF值计算权重的方法, 每个结构化信息中的元素的权重的公式为:
Figure BDA0002189882060000021
其中wi表示结构化信息中的元素在实际项目中的权重,mi表示出现该元素的代码单元数,n表示代码库中代码单元的总数,sumi表示本项目中出现该元素的次数。
本发明方法中,步骤4)中获取多条同义或近义的搜索条件的具体流程为:
(a)利用现有的自然语言处理技术,对搜索语句进行去除停用词,分词,提取关键词等步骤,将输入的搜索语句分解成搜索条件形如:
query(a,b,c...)
(b)获取每个关键词最相近的2个同义词或近义词,如:a1 a2,b1 b2
c1 c2,分别表示a b c的同义词或近义词。利用不同关键词的同义词和近义词产生多个搜索条件。
本发明方案中,步骤5)中返回结果的具体流程为:
(a)对每个搜索条件执行搜索过程,首先获取搜索条件与结构化信息的交集,对交集中元素的权重求和作为排序权重;
(b)合并(a)中的多个搜索结果按照权重的降序进行排序,按照语言内部原有的优先 级对合并后的结果进行调整。
本发明方法挖掘了结构化信息在实际项目中的使用情况作为代码单元的标注信息。同时结合了对搜索语句的分词和重构,利用生成的多条搜索条件的返回结果来提 高搜索准确率和性能。与现有技术相比,本发明具有以下优点:
(1)减少对外部资源的依赖,现有的代码搜索技术中对代码的标注主要来源: 人工标注,博客论坛等第三方资源,其中人工标注准确高,但是标注效率低下,每次 拓展信息的类型需要重新训练模型,严重依赖人的主观判断,同一事物不同人用不同 的方式描述,容易产生歧义。本发明只需要源代码,自动化从代码的结构上获取信息, 从现实项目中统计数据来标注代码单元。减少对外部的依赖,具有较高的工业应用价 值;
(2)该方案提高了代码单元标签的精准度,现在广泛应用的代码搜索技术采用 的是无标注的纯文本匹配,忽略了代码单元结构上的信息,同样忽视了编程语言自有 的规则,准确率还有待提高,本发明从结构,语言规则,项目统计等角度产生代码单 元的标签,在上述的角度更加准确地表示代码单元的含义,提高了代码单元标签的精 准度;
(3)该方案提高了搜索结果的准确度,提取搜索语句的关键词和关键词相应的 同义词,近义词;组合多个关键词的同义词或近义词产生多个搜索条件,获取产生的 搜索条件的搜索结果,合并上述结果按照权重降序排序,结构化信息中的控制流和变 量名进行微调。本发明通过这种方式提高了搜索准确度和性能。
附图说明
图1是本发明方法的流程图;
图2是结构化信息示例图;
图3解析搜索语句示例图,它提取搜索语句通过同义词近义词生成多个搜索条件;
图4是从JDK源码,项目源码,代码库中计算结构化信息的权重示例图;
具体实施方式:
为了加深对本发明的理解,下面结合附图对本实施例做详细的说明。
一种基于结构化信息的代码搜索方法,本发明提供一种通过静态获代码的结构化信息,统计在实际项目中出现权重作为代码单元标签,构建代码库。在此基础上,通 过对搜索条件的重构,然后合并多个搜索结构来提高搜索的准确性。
实施例1:参见图1-图4,一种基于结构化信息的代码搜索方法:图1给出了基于结构 化信息的代码搜索方法的体系结构,下面给出几个主要部分的具体说明。
步骤1)获取结构化信息:
本组件的主要功能通过静态解析Java源代码来获取代码单元的结构化信息,其中块信息包括返回值类型,方法名,修饰符,参数类型,全限定性路径名;类名包含了 方法体内所有涉及到的类型的名称和全限定性路径名;方法名包含方法体内所有涉及 到的被调用的方法名称;控制流包含if-else,while,do-while,for等;变量名表示方法体 内所有的变量的名称。
目前源代码解析成抽象语法树技术可以完成这一工作,如JDT(Java DevelopmentTool)。
步骤2)计算元素权重:
本组件的主要功能是利用提取到的数据对结构化信息中的元素进行统计,然后计算权重,给定一阈值,去除掉没有权重或者权重过低的元素,最后使用统计到的数据 作为元素的权重。带有权重的结构化信息作为代码单元的标签,然后将代码有标签的 代码单元放入代码库中。
步骤3)分析搜索语句:
本组件的主要功能是提取搜索语句中的关键词,同时获取关键词的同义词和近义词,通过组合不同关键词的同义词和近义词生成多个具有相似语义的搜索条件。作为 执行过程的输入。
目前已有很多种工具可以获取近义词和同义词这一工作,如WordNet等。
步骤4)获取多条同义或近义的搜索条件,组合步骤3)中的同义词或近义词,产生多条具有相似语义的搜索条件。
步骤5)返回最后结果。
本组件的主要功能是根据上述多个搜索语句通过执行搜索过程返回的结果,利用返回结果的权重进行合并按照权重降序排序,然后利用结构化信息中的控制流和变量 名对结果进行微调,返回TOP-K作为结果返回。
参见图1,一种基于结构化信息的代码搜索方法,具体过程如下:
步骤1)获取结构化信息,静态获取Java源代码的抽象语法树,从中提取结构化 信息,从中获取代码单元的方法体信息和方法体内元素使用信息,提取JDK(JavaDevelopment Kit)源码和项目源码中的类型和类型的方法信息。
步骤2)计算元素权重,利用步骤1)中的类型信息,统计结构化信息元素在现有 的类型中的使用情况,并且计算每个元素的权重,构建代码库。
(a)通过对源代码提取抽象语法树,然后提取代码单元的结构化信息,结构化 信息中包含块信息,类型名,方法名,控制流,变量名。块信息包括修饰符,方法名, 返回类型,参数类型。类型名表示方法体内涉及到的类型,方法名表示方法体内被调 用的方法名称,控制流表示在方法体内控制逻辑的关键词。变量名表示方法体内部对 象变量的名称。本发明通过遍历抽象语法树获取JDK和项目源码中的类型和对应的方 法信息。
(b)采取1957年Luhn,Hans Peter用到的TF,IDF值计算权重的方法,每个结构 化信息中的元素的权重的公式为:
Figure BDA0002189882060000051
其中wi表示结构化信息中的元素在实际项目中的权重,mi表示出现该元素的代码单元 数,n表示代码库中代码单元的总数,sumi表示本项目中出现该元素的次数。
步骤3)分析搜索语句,通过自然语言处理来获取搜索语句中的关键词,获取关键词相似度最高的同义词或近义词。
本发明使用NLP技术对输入的搜索语句去停用词,分词,提取关键词,将关键词 组合成搜索条件。使用工具WordNet获取现有关键词的同义词和近义词,根据返回的 相似度,选取相似度最高的2个同义词或近义词。
步骤4)获取多条同义或近义的搜索条件。组合步骤3)中的同义词或近义词,产生多条具有相似语义的搜索条件。
(a)利用现有的自然语言处理技术,对搜索语句进行去除停用词,分词,提取关键词等步骤,将输入的搜索语句分解成搜索条件形如:
query(a,b,c...)
(b)获取每个关键词最相近的2个同义词或近义词,如:a1 a2,b1 b2,c1 c2,分别 表示a b c的同义词或近义词。利用不同关键词的同义词和近义词产生多个搜索条件。 步骤5)返回搜索结果,执行步骤4)中产生的搜索条件,获取返回的搜索结果,获取搜 搜条件和结构化信息的交集,并求交集元素权重之和,在利用结构化信息中控制流, 变量 名来微调结果。
(a)对每个搜索条件执行搜索过程,首先获取搜索条件与结构化信息的交集,对交集中元素的权重求和作为排序权重。
(b)合并(a)中的多个搜索结果按照权重的降序进行排序,按照语言内部原有的优先 级对合并后的结果进行调整。
具体过程:
步骤1)获取结构化信息,静态获取Java源代码的抽象语法树,从中提取结构化 信息,从中获取代码单元的方法体信息和方法体内元素使用信息,提取JDK(JavaDevelopment Kit)源码和项目源码中的类型和类型的方法信息。
步骤2)计算元素权重,利用步骤1)中的类型信息,统计结构化信息元素在现有 的类型中的使用情况,并且计算每个元素的权重,构建结构化代码库。
步骤3)分析搜索语句,通过自然语言处理来获取搜索语句中的关键词,同时获 取关键词相似度最高的2个同义词或近义词。
步骤4)获取多条同义或近义的搜索条件,组合步骤3)中多个关键词的同义词或近义词,产生多条具有相似语义的搜索条件。
步骤5)返回搜索结果,执行多个搜索条件获得返回结果,获取搜索条件和结构 化信息的交集,并求交集元素权重之和,再利用结构化信息中控制流,变量名来调 整结果。
应用实施例:
为了方便描述,我们假定有如下简化的应用实例:选取代码单元如下所示
Figure BDA0002189882060000071
根据前面提到的计算步骤,依次实施:
第一步,获取结构化信息,提取本示例结构化信息如图3所示,格式为 <块信息,类名,方法名,控制流,变量名>;
块信息:com.XXX.XXX,connectiontest,Connection,public.
类名:Class,Connection,DriverManager,String.
方法名:forname,getconnection,isclosed,database;
控制流:try,catch
变量名:connection,A,B.
第二步通过获取到的类型集合和结构化信息集合,统计实际项目中的使用情况,计算元素的权重。
Label(x)=(connection:2,DriverManager:1,getconnection:4)
Label(x)表示代码单元的带权重的标签,x表示代码单元,数字表示TF*IDF的值。
第三步分析搜索语句,通过NLP来对搜索语句进行分词,去停用词,提取关键词。使用工具WordNet提取关键词的同义词或近义词,其中提取相似度最高的2个。
搜索语句:test the link of database.
分析后产生的搜索条件:(link,database)
关键词的同义词或近义词:
link:association,connection;
Database:
Database为组合词,保持原样。
第四步:获取多条同义或近义的搜索条件,组合第三步中的同义词或近义词,构建多条具有相似语义的搜索条件。由于对示例进行了缩减,只展示部分示例,如下:
①(connection,database)
②(association,database)
第五步,返回搜索结果,为每个搜索条件执行搜索过程获取搜索结果,然后利用结构化信息对结果进行微调,最后返回结果。
(a)根据搜索条件优化部分传递过来的关键词集合,将该集合中关键词与数据库中 的标签元素做相似度匹配,如果搜索条件中的关键词和代码单元标签中的元素相匹配,那么获取标签中命中的元素,对命中的元素进行求和,并将求和结果作为结果权重, 在结果中进行降序排序。
query(y)=(connection,database)
query(y)表示搜索条件集合,y表示搜索语句。
cross=label(x)∩query(y)
cross表示搜索集合与标签中元素的匹配到的元素的集合即交集。
Figure BDA0002189882060000081
rank(q)表示搜索集合与不同代码单元匹配的排序权重,q表示搜索集合,hit(x)表示 代码标签中命中的元素返回的权重。
(b)根据第四步中的搜索条件获取对应的搜索结果列表:R1 R2 R3 R4 R5 R6 R7R8. 由于结果组合情况很多,本发明选取了①②两个语句执行并合并结果,其余搜索条件操作相同。
R1=(98ac6nc0qwtyctzo:10,22bdgjk75dfflkiu:19,tydu85m3002942mn:1,36we8763mmmhcz yk:16,01kj2345fhzv56dg:20) ⑴
R2=(dser2309kj204325:0.8,cb3260tvwwyzoipq:2,uvwcz9mn0o80ppoi:12,xdmnrt90cz8926 43:16,saxc20obksyuhgfd:3) ⑵
R=(01kj2345fhzv56dg:20,22bdgjk75dfflkiu:19,36we8763mmmhczyk:16,uvwcz9mn0o80pp oi:12,98ac6nc0qwtyctzo:10) ⑶
R1和R2合并完之后得到R保留top5个结果记录。剩余的搜索条件执行后获得的结果 按照上述⑴⑵⑶三步进行合并,最后返回TOP5作为搜索结果。其中标号表示返回结果中代码单元的存储编号。
需要说明的是上述实施例,并非用来限定本发明的保护范围,在上述技术方案的基 础上所作出的等同变换或替代均落入本发明权利要求所保护的范围。

Claims (5)

1.一种基于结构化信息的代码搜索方法,其特征在于,所述方法包括以下步骤:
步骤1)获取结构化信息,静态获取Java源代码的抽象语法树,从中提取结构化信息,从中获取代码单元的方法体信息和方法体内元素使用信息,提取JDK(Java DevelopmentKit)源码和项目源码中的类型和类型的方法信息;
步骤2)计算元素权重,利用步骤1)中的类型信息,统计结构化信息元素在现有的类型中的使用情况,并且计算每个元素的权重,构建结构化代码库;
步骤3)分析搜索语句,通过自然语言处理来获取搜索语句中的关键词,同时获取关键词相似度最高的2个同义词或近义词;
步骤4)获取多条同义或近义的搜索条件,组合步骤3)中多个关键词的同义词或近义词,产生多条具有相似语义的搜索条件;
步骤5)返回搜索结果,执行多个搜索条件获得返回结果,获取搜索条件和结构化信息的交集,并求交集元素权重之和,再利用结构化信息中控制流,变量名来调整结果。
2.根据权利要求1所述的基于结构化信息的代码搜索方法,其特征在于,所述步骤1)中,生成结构化信息的方法的具体流程为:
a)提取JDK源码和项目源代码中所有的类型和类型的方法信息;
b)导入源代码生成抽象语法树,一个方法体视为一个代码单元,获取方法体的返回值类型,方法名,修饰符,参数类型,全限定性路径名,称之为块信息,获取方法体内所有的类型,被调用的方法,控制流,变量名。
3.根据权利要求1所述的基于结构化信息的代码搜索方法,其特征在于,所述步骤2)中计算元素权重的方法的具体流程为:
对于步骤1)生成的JDK源码和项目源码的类型和方法信息,利用实际项目中代码类型和方法的使用情况,对现有的类型和方法进行投票,类型或者方法被使用的次数;
对于步骤2)采取1957年Luhn,Hans Peter用到的TF,IDF值计算权重的方法,每个结构化信息中的元素的权重的公式为:
Figure FDA0002189882050000011
其中wi表示结构化信息中的元素在实际项目中的权重,mi表示出现该元素的代码单元数,n表示代码库中代码单元的总数,sumi表示本项目中出现该元素的次数。
4.根据权利要求1所述的基于结构化信息的代码搜索方法,其特征在于,所述步骤4)中获取多条同义或近义的搜索条件的具体流程为:
(a)利用现有的自然语言处理技术,对搜索语句进行去除停用词,分词,提取关键词等
步骤,将输入的搜索语句分解成搜索条件形如:
query(a,b,c...);
(b)获取每个关键词最相近的2个同义词或近义词。
5.根据权利要求1所述的基于结构化信息的代码搜索方法,其特征在于,所述步骤5)中返回搜索结果的具体流程:
(a)对每个搜索条件执行搜索过程,首先获取搜索条件与结构化信息的交集,对交集中元素的权重求和作为排序权重。
(b)合并(a)中的多个搜索结果按照权重的降序进行排序,按照语言内部原有的优先级对合并后的结果进行调整。
CN201910828478.6A 2019-09-03 2019-09-03 一种基于结构化信息的代码搜索方法 Active CN111309853B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910828478.6A CN111309853B (zh) 2019-09-03 2019-09-03 一种基于结构化信息的代码搜索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910828478.6A CN111309853B (zh) 2019-09-03 2019-09-03 一种基于结构化信息的代码搜索方法

Publications (2)

Publication Number Publication Date
CN111309853A true CN111309853A (zh) 2020-06-19
CN111309853B CN111309853B (zh) 2024-03-22

Family

ID=71159661

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910828478.6A Active CN111309853B (zh) 2019-09-03 2019-09-03 一种基于结构化信息的代码搜索方法

Country Status (1)

Country Link
CN (1) CN111309853B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113051253A (zh) * 2021-04-15 2021-06-29 广州云族佳科技有限公司 一种构建标签数据库的方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100169871A1 (en) * 2008-12-30 2010-07-01 Microsoft Corporation Structured search in source code
CN103186633A (zh) * 2011-12-31 2013-07-03 北京百度网讯科技有限公司 一种结构化信息抽取方法、搜索方法和装置
CN106503265A (zh) * 2016-11-30 2017-03-15 北京赛迈特锐医疗科技有限公司 基于权值的结构化搜索系统及其搜索方法
CN106776888A (zh) * 2016-11-30 2017-05-31 北京赛迈特锐医疗科技有限公司 智能结构化搜索系统及其搜索方法
CN109344230A (zh) * 2018-10-31 2019-02-15 任志颖 代码库文件生成、代码搜索、联结、优化以及移植方法
CN110188104A (zh) * 2019-05-30 2019-08-30 中森云链(成都)科技有限责任公司 一种面向K12编程的Python程序代码快速搜索方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100169871A1 (en) * 2008-12-30 2010-07-01 Microsoft Corporation Structured search in source code
CN103186633A (zh) * 2011-12-31 2013-07-03 北京百度网讯科技有限公司 一种结构化信息抽取方法、搜索方法和装置
CN106503265A (zh) * 2016-11-30 2017-03-15 北京赛迈特锐医疗科技有限公司 基于权值的结构化搜索系统及其搜索方法
CN106776888A (zh) * 2016-11-30 2017-05-31 北京赛迈特锐医疗科技有限公司 智能结构化搜索系统及其搜索方法
CN109344230A (zh) * 2018-10-31 2019-02-15 任志颖 代码库文件生成、代码搜索、联结、优化以及移植方法
CN110188104A (zh) * 2019-05-30 2019-08-30 中森云链(成都)科技有限责任公司 一种面向K12编程的Python程序代码快速搜索方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
李阵等: "基于多特征权重分配的源代码搜索优化" *
顾逸圣等: "基于语法和语义结合的源代码精确搜索方法" *
黄丽韶: "基于语法结构的源代码搜索的研究" *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113051253A (zh) * 2021-04-15 2021-06-29 广州云族佳科技有限公司 一种构建标签数据库的方法和装置

Also Published As

Publication number Publication date
CN111309853B (zh) 2024-03-22

Similar Documents

Publication Publication Date Title
CN109189942B (zh) 一种专利数据知识图谱的构建方法及装置
CN106649260B (zh) 基于评论文本挖掘的产品特征结构树构建方法
Demir et al. Improving named entity recognition for morphologically rich languages using word embeddings
Klinkmüller et al. Increasing recall of process model matching by improved activity label matching
CN107102993B (zh) 一种用户诉求分析方法和装置
CN101751455B (zh) 采用人工智能技术自动产生标题的方法
CN112215013B (zh) 一种基于深度学习的克隆代码语义检测方法
CN106407113B (zh) 一种基于Stack Overflow和commit库的bug定位方法
CN111353306B (zh) 基于实体关系和依存Tree-LSTM的联合事件抽取的方法
CN110750240A (zh) 一种基于序列到序列模型的代码片段推荐方法
CN104484380A (zh) 个性化搜索方法及装置
CN115576984A (zh) 中文自然语言生成sql语句及跨数据库查询方法
CN110175585B (zh) 一种简答题自动批改系统及方法
CN106933800A (zh) 一种金融领域的事件句抽取方法
CN112199512B (zh) 面向科技服务的事理图谱构建方法、装置、设备及存储介质
CN103646112A (zh) 利用了网络搜索的依存句法的领域自适应方法
CN113609838B (zh) 文档信息抽取及图谱化方法和系统
CN101576850B (zh) 一种改进的面向宿主的嵌入式软件白盒测试方法
CN114547619A (zh) 一种基于树的漏洞修复系统及修复方法
Cheng et al. A similarity integration method based information retrieval and word embedding in bug localization
CN111309853B (zh) 一种基于结构化信息的代码搜索方法
CN113761162A (zh) 一种基于上下文感知的代码搜索方法
Juan An effective similarity measurement for FAQ question answering system
CN117290376A (zh) 基于大语言模型的两阶段Text2SQL模型、方法与系统
Harrington et al. Asknet: Automated semantic knowledge network

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant