本发明涉及数据检索技术领域,尤其涉及一种资源检索方法及计算机可读存储介质。
背景技术:
图拓扑关系的搜索算法被应用在很多场景中,目前比较常见的搜索有以下几种方案:
1、直接采用全文搜索引擎
常用的引擎包含elasticsearch(下文简称:es)、solr、lucence,这些虽然都可以支持全文检索,但不能有效处理资源间的图关系,需要额外构建系统来支持关系的过滤,无法支撑复杂图遍历场景下的检索;
2、采用原始的图引擎
常用的图引擎主要有titan、neo4j等开源框架,虽然这些引擎可能有效处理图关系,且满足特定条件的全文检索场景(其底层也依赖了全文检索引擎技术:es、solr),但其要求只能遍历局部图(由一个或几个点出发,访问到较小集合的点),无法完全满足教育领域里的资源检索要求:实时响应,且命中结果集会包含较大量的资源。
技术实现要素:
本发明所要解决的技术问题是:提供一种资源检索方法及计算机可读存储介质,解决当查询结果较大时,无法实时响应的问题。
为了解决上述技术问题,本发明采用的技术方案为:一种资源检索方法,包括:
根据第一资源检索条件在titan图引擎中进行图遍历,得到第一图节点编号集合;
分别将所述第一图节点编号集合中的各图节点编号转换为es引擎中的es编号,得到第一es编号集合;
将第二资源检索条件转换为es检索条件;
根据所述第一es编号集合和es检索条件在es引擎中进行检索,得到第二es编号集合;
分别将所述第二es编号集合中的各es编号转换为titan图引擎中的图节点编号,得到第二图节点编号集合;
根据所述第二图节点编号集合在titan图引擎中获取得到资源列表。
本发明还涉及一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如下步骤:
根据第一资源检索条件在titan图引擎中进行图遍历,得到第一图节点编号集合;
分别将所述第一图节点编号集合中的各图节点编号转换为es引擎中的es编号,得到第一es编号集合;
将第二资源检索条件转换为es检索条件;
根据所述第一es编号集合和es检索条件在es引擎中进行检索,得到第二es编号集合;
分别将所述第二es编号集合中的各es编号转换为titan图引擎中的图节点编号,得到第二图节点编号集合;
根据所述第二图节点编号集合在titan图引擎中获取得到资源列表。
本发明的有益效果在于:通过先根据第一资源检索条件在titan图中进行图遍历,获取到titan图中局部图,然后在es引擎中根据第二检索条件在局部图中进行检索,从而解决当查询结果较大时,无法实时响应的问题。本发明通过将titan索引与es索引相结合,使得titan图引擎可支持实时全文检索,扩展了titan图引擎的适用场景范围,同时使得es引擎可支持图遍历,扩展了es引擎全文检索的适用场景范围。
附图说明
图1为本发明实施例一的一种资源检索方法的流程图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。
本发明最关键的构思在于:在titan索引的基础上,在图遍历的过程中显示使用es索引。
请参阅图1,一种资源检索方法,包括:
根据第一资源检索条件在titan图引擎中进行图遍历,得到第一图节点编号集合;
分别将所述第一图节点编号集合中的各图节点编号转换为es引擎中的es编号,得到第一es编号集合;
将第二资源检索条件转换为es检索条件;
根据所述第一es编号集合和es检索条件在es引擎中进行检索,得到第二es编号集合;
分别将所述第二es编号集合中的各es编号转换为titan图引擎中的图节点编号,得到第二图节点编号集合;
根据所述第二图节点编号集合在titan图引擎中获取得到资源列表。
从上述描述可知,本发明的有益效果在于:
进一步地,所述分别将所述第一图节点编号集合中的各图节点编号转换为es引擎中的es编号,得到第一es编号集合具体为:
根据图节点编号与es编号的映射关系,分别将所述第一图节点编号集合中的各图节点编号转换为es引擎中的es编号,得到第一es编号集合。
进一步地,所述分别将所述第二es编号集合中的各es编号转换为titan图引擎中的图节点编号,得到第二图节点编号集合具体为:
根据图节点编号与es编号的映射关系,分别将所述第二es编号集合中的各es编号转换为titan图引擎中的图节点编号,得到第二图节点编号集合。
由上述描述可知,根据图节点id与esid一一对应的映射关系,实现二者之间的相互转换。
进一步地,所述es引擎中存储有titan图引擎中的资源的属性信息;
所述将第二资源检索条件转换为es检索条件具体为:
将第二资源检索条件转换为es引擎中对应资源的属性信息的过滤条件。
由上述描述可知,将第二资源检索条件转换为对应的es检索条件,使得可在es引擎中进行检索。
本发明还提出一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如下步骤:
根据第一资源检索条件在titan图引擎中进行图遍历,得到第一图节点编号集合;
分别将所述第一图节点编号集合中的各图节点编号转换为es引擎中的es编号,得到第一es编号集合;
将第二资源检索条件转换为es检索条件;
根据所述第一es编号集合和es检索条件在es引擎中进行检索,得到第二es编号集合;
分别将所述第二es编号集合中的各es编号转换为titan图引擎中的图节点编号,得到第二图节点编号集合;
根据所述第二图节点编号集合在titan图引擎中获取得到资源列表。
进一步地,所述分别将所述第一图节点编号集合中的各图节点编号转换为es引擎中的es编号,得到第一es编号集合具体为:
根据图节点编号与es编号的映射关系,分别将所述第一图节点编号集合中的各图节点编号转换为es引擎中的es编号,得到第一es编号集合。
进一步地,所述分别将所述第二es编号集合中的各es编号转换为titan图引擎中的图节点编号,得到第二图节点编号集合具体为:
根据图节点编号与es编号的映射关系,分别将所述第二es编号集合中的各es编号转换为titan图引擎中的图节点编号,得到第二图节点编号集合。
进一步地,所述es引擎中存储有titan图引擎中的资源的属性信息;
所述将第二资源检索条件转换为es检索条件具体为:
将第二资源检索条件转换为es引擎中对应资源的属性信息的过滤条件。
实施例一
请参照图1,本发明的实施例一为:一种资源检索方法,所述方法基于titan图引擎,可应用于基于图拓扑关系的全文搜索场景,例如教育资源检索中,全文搜索某个知识点下包含某些关键字的课件、习题等资源列表,也适用于社交场景下的好友搜索等。
所述方法包括如下步骤:
s1:根据第一资源检索条件在titan图引擎中进行图遍历,得到第一图节点编号集合。在titan图中,每个节点可代表不同的资源,而边则可代表资源关系,即资源之间的关联关系。第一资源检索条件可以为资源,也可以为资源关系,根据第一资源检索条件,在titan图中进行遍历,筛选出中间结果,从titan图中获取满足第一资源检索条件的图节点id集合。
s2:分别将所述第一图节点编号集合中的各图节点编号转换为es引擎中的es编号,得到第一es编号集合。具体地,默认场景下,图节点编号和es编号是一一对应的,只不过编号的形式不一致,titan图引擎中的编号格式为长整型,而es引擎中的编号格式为字符串,通过现有的编码技术生成映射关系。本步骤即根据图节点id与esid的映射关系,使用titan图引擎中自带的工具,将图节点id转换为esid。
s3:将第二资源检索条件转换为es检索条件;第二资源检索条件可为对应某些资源的关键字。在es引擎中同时维护了资源的属性信息,本步骤即将第二资源检索条件转换成es属性信息的过滤条件。
s4:根据所述第一es编号集合和es检索条件在es引擎中进行检索,得到第二es编号集合;即将第一资源检索条件和第二资源检索条件都转换为es检索条件后,形成最终的es检索条件,在es引擎中进行检索,获取到资源节点的id列表。
s5:分别将所述第二es编号集合中的各es编号转换为titan图引擎中的图节点编号,得到第二图节点编号集合;即根据步骤s2的映射关系,将esid转换为图节点id。
s6:根据所述第二图节点编号集合在titan图引擎中获取得到资源列表;即根据图节点id检索得到查询结果,即获取资源除id外的额外信息,包括分页数据。
本实施例在titan全局索引(graphindex)和局部索引(vertexcentricindex)基础上,提出一种在图遍历过程中显式使用(人为改变使用索引策略,强制使用)es索引的方法,解决当查询结果较大时,无法实时响应的问题,实现titan的定制化索引检索能力。
在具体应用场景中,如在k12教育领域中,资源一般通过教育阶段、适用对象、学科、版本等来做归类,并挂靠在相应的教材、章节下,一般教师备课,需要在与知识点对应的章节下全文搜索需要的素材、课件等资源。
首先,教师可先登录到101ppt客户端,系统根据用户信息自动配置到相应的教材。然后,教师选择在某个章节下制作课件,在搜索框中输入某些关键字;后台即通过上述方法,根据分类、教材、章节及关键字搜索出相关的素材和课件列表。
实施例二
本实施例是对应上述实施例的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如下步骤:
根据第一资源检索条件在titan图引擎中进行图遍历,得到第一图节点编号集合;
分别将所述第一图节点编号集合中的各图节点编号转换为es引擎中的es编号,得到第一es编号集合;
将第二资源检索条件转换为es检索条件;
根据所述第一es编号集合和es检索条件在es引擎中进行检索,得到第二es编号集合;
分别将所述第二es编号集合中的各es编号转换为titan图引擎中的图节点编号,得到第二图节点编号集合;
根据所述第二图节点编号集合在titan图引擎中获取得到资源列表。
进一步地,所述分别将所述第一图节点编号集合中的各图节点编号转换为es引擎中的es编号,得到第一es编号集合具体为:
根据图节点编号与es编号的映射关系,分别将所述第一图节点编号集合中的各图节点编号转换为es引擎中的es编号,得到第一es编号集合。
进一步地,所述分别将所述第二es编号集合中的各es编号转换为titan图引擎中的图节点编号,得到第二图节点编号集合具体为:
根据图节点编号与es编号的映射关系,分别将所述第二es编号集合中的各es编号转换为titan图引擎中的图节点编号,得到第二图节点编号集合。
进一步地,所述es引擎中存储有titan图引擎中的资源的属性信息;
所述将第二资源检索条件转换为es检索条件具体为:
将第二资源检索条件转换为es引擎中对应资源的属性信息的过滤条件。
综上所述,本发明提供的一种资源检索方法及计算机可读存储介质,通过先根据第一资源检索条件在titan图中进行图遍历,获取到titan图中局部图,然后在es引擎中根据第二检索条件在局部图中进行检索,从而解决当查询结果较大时,无法实时响应的问题。本发明通过将titan索引与es索引相结合,使得titan图引擎可支持实时全文检索,扩展了titan图引擎的适用场景范围,同时使得es引擎可支持图遍历,扩展了es引擎全文检索的适用场景范围。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。