一种结构化数据库的一键查询方法和装置与流程

文档序号:17489438发布日期:2019-04-23 20:18阅读:219来源:国知局
一种结构化数据库的一键查询方法和装置与流程

本发明涉及数据查询技术领域,提供了一种结构化数据库的一键查询方法和装置。



背景技术:

结构化数据也称作行数据,是由二维表结构来逻辑表达和实现的数据,其字段比较固定,不同列存储的数据性质不同,例如,姓名列存储的都是汉字,电话号码、身份证列都是数据和字母。在大数据平台应用中,一个核心的功能就是对已创建的es索引结构化数据进行实时搜索,而且实时搜索要求快速响应。然而,在传统的一键搜功能中,当确定查询关键词后,由于关键词不附带数据库中任一相关数据列的列名信息,需要根据查询条件对结构化数据库二维表中的所有字段进行查询搜索,搜索性能差,搜索效率低。例如,如果当前的查询条件为身份证,则需要对所有列进行一一查询,而无法快速锁定在身份证列,大大影响了搜索性能。

鉴于此,克服上述现有技术所存在的缺陷是本技术领域亟待解决的问题。



技术实现要素:

本发明需要解决的技术问题是:

在传统的结构化数据搜索中,一键搜功能需要根据查询条件对二维表中的所有字段进行查询搜索,搜索性能差,搜索效率低,大大影响了搜索性能。

本发明通过如下技术方案达到上述目的:

第一方面,本发明提供了一种结构化数据库的一键查询方法,包括:

分析结构化数据库中的每列数据,得到每列数据的特征属性;

将得到的每列数据的特征属性加载到缓存中;

将待查询的关键词的特征属性与缓存中每列数据的特征属性进行匹配;

匹配对应一列或者多列数据的特征属性成功后,根据所述关键词在对应列数据中进行一键查询。

优选的,所述特征属性包括最大数据长度、字符类型、出现的字符、连续出现数字的最大长度和连续出现字母的最大长度中的一项或多项。

优选的,所述分析结构化数据库中的每列数据,得到每列数据的特征属性具体为:

确定每列数据中的最大数据长度并记录;

确定每列数据中包含的字符类型并记录;

确定每列数据中出现的字符并记录;

其中,对于重复出现的字符仅记录一次。

优选的,所述将待查询的关键词所包含的特征属性与缓存中对应每列数据的特征属性进行匹配,具体包括:

获取所述关键词的数据长度,分别与每列数据中的最大数据长度进行匹配,并将匹配成功的列保留,将匹配失败的列裁减掉;

获取所述关键词中包含的字符类型,分别与每列数据中包含的字符类型进行匹配,并将匹配成功的列保留,将匹配失败的列裁减掉;

获取所述关键词中包含的字符,分别与每列数据中出现的字符进行匹配,并将匹配成功的列保留,将匹配失败的列裁减掉。

优选的,当所述关键词的任一项特征属性与k列数据的对应特征属性匹配失败时,所述关键词与k列数据匹配失败,停止所述关键词与k列数据之间其他特征属性的继续匹配;当所述关键词的各项特征属性与k列数据的对应各项特征属性均匹配成功时,所述关键词与k列数据匹配成功;其中,k列为结构化数据库中的任一列。

优选的,当所述关键词的数据长度大于k列数据的最大数据长度时,所述关键词与k列数据之间的数据长度属性匹配失败,反之则匹配成功;

当所述关键词中包含的字符类型与k列数据中包含的字符类型一致时,所述关键词与k列数据之间的字符类型属性匹配成功,反之则匹配失败;

当所述关键词中出现的字符与k列数据中出现的字符一致时,所述关键词与k列数据之间的字符属性匹配成功,反之则匹配失败;其中,k列为结构化数据库中的任一列。

优选的,在得到每列数据的特征属性后,所述方法还包括:

分别将每列数据对应的最大数据长度进行比较,并在最大数据长度相同的列之间建立映射关系;

分别将每列数据对应的字符类型进行比较,并在字符类型相同的列之间建立映射关系;

分别将每列数据中对应的出现字符进行比较,并在出现字符相同的列之间建立映射关系。

优选的,当所述关键词的任一项特征属性与k列数据的对应特征属性匹配失败时,所述关键词与k列数据匹配失败,同时,在确定k列包含有一个或者多个映射关系数据列时,确认所述关键词与所述一个或者多个映射关系数据列的匹配也失败,进而跳过所述关键词与所述一个或者多个映射关系数据列的匹配;

当所述关键词的任一项特征属性与k列数据的对应特征属性匹配成功,并且确定k列包含有一个或者多个映射关系数据列时,则确认所述关键词与所述一个或者多个映射关系数据列之间的对应特征属性也匹配成功,进而跳过所述关键词与所述一个或者多个映射关系数据列之间对应特征属性的匹配;其中,k列为结构化数据库中的任一列。

优选的,在进行特征属性匹配前,所述方法还包括:按照搜索频率或搜索数量的大小,对结构化数据库中的每一列数据进行排序;

则在进行特征属性匹配时,按照搜索频率或搜索数量由大到小的顺序,依次进行所述关键词与各列数据之间的特征属性的匹配。

第二方面,本发明还提供了一种结构化数据库的一键查询装置,包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成上述第一方面所述的结构化数据库的一键查询方法。

与现有技术相比,本发明的有益效果是:本发明通过预先进行数据分析,获取结构化数据库中每列数据对应的特征属性,通过将查询的关键词与每列数据分别进行特征属性的匹配,在一键搜查询时可以自动裁减掉一半以上的字段,快速根据关键词锁定对应的数据列,从而大大提高了搜索效率,提高查询性能。

【附图说明】

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种结构化数据库的一键查询方法的流程图;

图2为本发明实施例提供的一种结构化数据库的二维表示意图;

图3为本发明实施例提供的一种获取每列数据特征属性的方法流程图;

图4为本发明实施例提供的一种二维表中特征属性的示意图;

图5为本发明实施例提供的一种特征属性匹配的方法流程图;

图6为本发明实施例提供的一种二维表中各列的映射关系示意图;

图7为本发明实施例提供的一种结构化数据库的一键查询装置的架构图。

【具体实施方式】

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。下面就参考附图和实施例结合来详细说明本发明。

实施例1:

本发明实施例提供了一种结构化数据库的一键查询方法,如图1所示,具体包括以下步骤:

步骤10,分析结构化数据库中的每列数据,得到每列数据的特征属性。其中,所述特征属性包括最大数据长度、字符类型、出现的字符、连续出现数字的最大长度和连续出现字母的最大长度中的一项或多项,每一列数据对应的特征属性都是存在不同的;在数据清洗入库时,预先通过数据分析得到对应于每列数据的特征属性。

步骤20,将得到的每列数据的特征属性加载到缓存中。其中,所述特征属性相当于总结了每列数据对应的重要数据特征,起到一个“目录”或“摘要”的作用,而每列对应的具体数据相当于“正文”。

步骤30,将待查询的关键词的特征属性与缓存中每列数据的特征属性进行匹配。在进行匹配时,需要将所述关键词的每项特征属性分别与每列对应的每项特征属性进行匹配。其中,对于结构化数据库中的任一k列,当所述关键词的任一项特征属性与k列数据的对应特征属性匹配失败时,则判断所述关键词与k列数据匹配失败,只要出现匹配失败即可停止所述关键词与k列数据的继续匹配,并将k列裁减掉,无需再进行所述关键词与k列数据之间其他特征属性的继续匹配;只有所述关键词与k列数据之间前一项特征属性匹配成功时,才会继续进行所述关键词与k列数据之间下一项特征属性的匹配;当所述关键词的各项特征属性与k列数据的对应各项特征属性均匹配成功时,所述关键词与k列数据匹配成功,则将匹配成功的k列保留。

步骤40,匹配对应一列或者多列数据的特征属性成功后,根据所述关键词在对应列数据中进行一键查询。当所述关键词与每列数据都匹配完成后,匹配失败的列都被裁剪掉,而匹配成功的一个或多个列被保留,字段内容大大减少,最终只需在留下的匹配成功的列中进行数据一键查询即可。

本发明提供的上述结构化数据库的一键查询方法中,预先进行数据分析,获取结构化数据库中每列数据对应的特征属性,通过将查询的关键词与每列数据分别进行特征属性的匹配,在一键搜查询时可以自动裁减掉一半以上的字段,快速根据关键词锁定对应的数据列,从而大大提高了搜索效率,提高查询性能。

以图2所示的二维表数据结构为例,假设所述特征属性包括最大数据长度、字符类型和出现的字符,则在所述步骤10中,每列数据的特征属性的获取过程可参考图3,包括如下步骤:

步骤101,确定每列数据中的最大数据长度并记录。例如,对于身份证列,由于身份证号码都是由18位数字或数字加字母构成的,则该列中各数据对应的数据长度是相同的,直接记录该相同的数据长度即可;而对于地址、邮箱等列,该列中各数据对应的数据长度可能各有不同,此时通过比较确定其中的最大数据长度并记录。

步骤102,确定每列数据中包含的字符类型并记录。例如,对于身份证列,数据中通常只包含数字,某些还包括字母;对于电话号码列,数据中只包含数字;对于姓名列,数据中只包含汉字;其他各列不一一列举。

步骤103,确定每列数据中出现的字符并记录;其中,对于重复出现的字符仅记录一次。例如,对于某个完全由数字组成的数据“21032530881”,则出现的字符为0、1、2、3、5、8,对于每列中的所有数据都进行相同的统计,最后得到每列数据对应的所有字符。

其中,上述三个步骤的实施顺序可以互换,并不唯一限定,通常可按照获取特征属性时由易到难的顺序进行确定。例如,在本方案中,由于对于数据长度的分析较快,因此首先确定数据长度,再确定其他特征属性。当所述特征属性中包括连续出现数字的最大长度以及连续出现字母的最大长度时,数据分析时还需确定上述两项数据并记录。例如,对于某个由数字和字母组成的数据“2103b53acb81”,连续出现的最长数字串为2103,连续出现的最长字母串为acb,由此可确定该数据对应的连续出现数字和/或字母的最大长度,对于每列中的所有数据都进行相同的统计,最后得到每列数据连续出现数字和/或字母的最大长度。

假设二维表总共有n列,以字母a、b、c分别表示最大数据长度、字符类型、出现字符这三项特征属性,而a1、b1、c1分别表示二维表中第一列的对应三项特征属性,以此类推,ak、bk、ck分别表示二维表中第k列的对应三项特征属性,an、bn、cn分别表示二维表中第n列的对应三项特征属性。当获取特征属性后,记录结果可参考图4。同时,为便于描述,以字母a’、b’、c’分别表示所述关键词的数据长度、字符类型、出现字符这三项特征属性。

继续参考图5,所述步骤30具体包括以下步骤:

步骤301,获取所述关键词的数据长度,分别与每列数据中的最大数据长度进行匹配,并将匹配成功的列保留,将匹配失败的列裁减掉。具体可结合图4,也就是将所述关键词的a’特征分别与每列对应的a1、a2、......、an特征进行比较,假设a’特征分别与a1、a2、a5、a7匹配成功,其他列均匹配失败,则只将第1、2、5、7列保留,其他匹配失败的列均裁减掉。其中,对于结构化数据库中的任一k列,当所述关键词的数据长度大于k列数据的最大数据长度时,所述关键词与k列数据之间的数据长度属性匹配失败,反之则匹配成功。

步骤302,获取所述关键词中包含的字符类型,分别与每列数据中包含的字符类型进行匹配,并将匹配成功的列保留,将匹配失败的列裁减掉。继续结合图4,此时二维表中只剩第1、2、5、7列,则继续将关键词的b’特征分别与剩余四列对应的b1、b2、b5、b7特征进行比较,其他a特征已经匹配失败的列无需再匹配b特征;假设b’特征分别与a1、a7特征匹配成功,而与a2、a5特征匹配失败,则只将第1列和第7列保留,而匹配失败的第2列和第5列均裁减掉。其中,对于结构化数据库中的任一k列,当所述关键词中包含的字符类型与k列数据中包含的字符类型一致时,所述关键词与k列数据之间的字符类型属性匹配成功,反之则匹配失败。

步骤303,获取所述关键词中包含的字符,分别与每列数据中出现的字符进行匹配,并将匹配成功的列保留,将匹配失败的列裁减掉。继续结合图4,此时二维表中只剩第1列和第7列,则继续将关键词的c’特征分别与剩余两列对应的c1和c7特征进行比较,其他b特征已经匹配失败的列无需再匹配c特征;假设c’特征与c1特征匹配成功,而与c7特征匹配失败,则只将第1列保留,匹配失败的第7列裁减掉。其中,对于结构化数据库中的任一k列,当所述关键词中出现的字符与k列数据中出现的字符一致时,所述关键词与k列数据之间的字符属性匹配成功,反之则匹配失败。

根据上述过程,最终二维表中仅剩余第1列数据,则只需按照关键词在第1列进行一键搜查询即可,由于通过特征属性的匹配裁减掉了大部分列数据,因此,在最终进行一键搜查询时,大大节省了查询时间,提高了查询效率。其中,步骤301、302与303的实施顺序可互换,并不唯一限定。

结合本发明实施例,还存在一种优选的实现方案,在得到每列数据的特征属性后,与关键词进行特征属性的匹配前,所述方法还包括:

a.分别将每列数据对应的最大数据长度进行比较,并在最大数据长度相同的列之间建立映射关系。参考图6,假设第1列的最大数据长度与第5列、第7列的最大数据长度相同,即a1特征与a5特征、a8特征相同,则第1列、第5列、第7列之间互相建立映射关系。具体可按照图6所示进行标记,将有映射关系的列号标记在对应列的对应特征属性后,即在第1列的a1特征后标记(5,7),在第5列的a5特征后标记(1,7),在第7列的a7特征后标记(1,5)。其中,没有标记则代表与其他列不存在映射关系。

b.分别将每列数据对应的字符类型进行比较,并在字符类型相同的列之间建立映射关系。具体方法可参考a中描述,此处不再赘述。

c.分别将每列数据中对应的出现字符进行比较,并在出现字符相同的列之间建立映射关系。具体方法可参考a中描述,此处不再赘述。

其中,所示步骤a、b、c的顺序可以互换,并不唯一限定,可以只选取其中的一项或两项特征属性进行比较,确定映射关系,也可以三项特征属性均做比较,确定映射关系。

在确定映射关系的优选方案中,进行数据匹配时,对于结构化数据库中的任一k列,当所述关键词的任一项特征属性与k列数据的对应特征属性匹配失败时,所述关键词与k列数据匹配失败,同时,在确定k列包含有一个或者多个映射关系数据列时,确认所述关键词与所述一个或者多个映射关系数据列的匹配也失败,进而跳过所述关键词与所述一个或者多个映射关系数据列的匹配;当所述关键词的任一项特征属性与k列数据的对应特征属性匹配成功,并且确定k列包含有一个或者多个映射关系数据列时,则确认所述关键词与所述一个或者多个映射关系数据列之间的对应特征属性也匹配成功,进而跳过所述关键词与所述一个或者多个映射关系数据列之间对应特征属性的匹配。具体举例如下:

结合图6,假设所述关键词的a’特征与第1列的a1特征匹配成功,根据第1列的标记(5,7)可知,第5列、第7列的a特征与第1列的a特征相同,因此可确定所述关键词的a’特征也必然与a5和a7特征匹配成功,也就无需再进行a’特征与a5、a7特征的匹配,直接保留第1、5、7列即可。同样地,当所述关键词的a’特征与第1列的a1特征匹配失败时,可确定所述关键词的a’特征也必然与a5和a7特征匹配失败,无需再进行a’特征与a5、a7特征的匹配,直接将第5列、第7列与第1列一起裁减掉即可。通过上述方法,匹配次数可大大减少,提高了匹配效率,进而可提高最终的查询性能。

结合本发明实施例,还存在一种优选的实现方案,在进行特征属性匹配前,所述方法还包括:按照搜索频率或搜索数量的大小,对结构化数据库中的每一列数据进行排序。按照用户的检索需求,可能二维表中的某一列或某几列数据被查询的较多,表明用户的查询需求较大,按照搜索频率或搜索数量由大到小对每列进行排序后,在进行特征属性匹配时,可按照搜索频率或搜索数量由大到小的顺序,依次进行所述关键词与各列数据之间的特征属性的匹配。例如,第5列的搜索频率最高,排名最靠前,则可优先将所述关键词与第5列进行各项特征属性的匹配。通过上述方法,可进一步将用户需求考虑进来,在一定程度上也可以提高查询性能。

实施例2:

在实施例1提供的一种结构化数据库的一键查询方法的基础上,本发明还提供了一种可用于实现上述方法的结构化数据库的一键查询装置,如图7所示,是本发明实施例的装置架构示意图。本实施例的结构化数据库的一键查询装置包括一个或多个处理器21以及存储器22。其中,图7中以一个处理器21为例。

所述处理器21和所述存储器22可以通过总线或者其他方式连接,图7中以通过总线连接为例。

所述存储器22作为一种结构化数据库的一键查询方法非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如实施例1中的结构化数据库的一键查询方法。所述处理器21通过运行存储在所述存储器22中的非易失性软件程序、指令以及模块,从而执行结构化数据库的一键查询装置的各种功能应用以及数据处理,即实现实施例1的结构化数据库的一键查询方法。

所述存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,所述存储器22可选包括相对于所述处理器21远程设置的存储器,这些远程存储器可以通过网络连接至所述处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例1中的结构化数据库的一键查询方法,例如,执行以上描述的图1、图3和图5所示的各个步骤。

本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取存储器(ram,randomaccessmemory)、磁盘或光盘等。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1