基于星形数据库的检索方法及装置与流程

文档序号:12550702阅读:223来源:国知局
基于星形数据库的检索方法及装置与流程

本发明涉及计算机领域,尤其涉及一种基于星形数据库的检索方法及装置。



背景技术:

随着计算机计算和处理能力的不断提升,人们对大型数据库中提炼目标数据的要求也越来越丰富。星形数据库,是指由一个或多个事实表,以及事实表中引用的任意数量的维表组成。随着用户对数据展示的需求越来越深入,对于各个模块间的联动查询要求越来越复杂。

现有技术中,对于星形数据库的检索是通过不同条件在SQL中拼接不同的where条件来进行解决,查询语句很复杂。并且,随着用户对这种组合查询的需求增多,查询语句的复杂度将会进一步增大。如果需要对某个条件进行修改,需要批量的对所有涉及到该查询条件的地方进行修改,不便于代码的维护,以传统的方式写出来的SQL语句不利于业务上的理解。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的基于星形数据库的检索方法及装置。

一方面,本发明提供一种基于星形数据库的检索方法,该方法包括:

接收用户选择的查询条件;其中,所述查询条件中包含多个查询模块,每个查询模块作为所述查询条件中的一个子条件;所述查询模块用于对星形数据库中的数据进行子条件过滤;

将所述查询条件解析得到一个条件大集合,所述条件大集合中包含多个子条件;

根据所述条件大集合查询数据库,得到所述大集合查询结果;

按照各个查询模块将所述大集合查询结果分类,得到每个所述查询模块对应的查询结果;所述查询模块对应的查询结果为从所述大集合查询结果中筛选出的满足所述查询模块对应的子条件的结果数据。

另一方面,本发明提供一种基于星形数据库的检索装置,包括:

接收模块,用于接收用户选择的查询条件;其中,所述查询条件中包含多个查询模块,每个查询模块作为所述查询条件中的一个子条件;所述查询模块用于对星形数据库中的数据进行子条件过滤;

解析单元,用于将所述接收单元接收到的查询条件解析得到一个条件大集合,所述条件大集合中包含多个子条件;

查询单元,用于根据所述整合单元整合的条件大集合查询数据库,得到所述大集合查询结果;

分类单元,用于按照各个查询模块将所述查询单元查询到的大集合查询结果分类,得到每个所述查询模块对应的查询结果;所述查询模块对应的查询结果为从所述大集合查询结果中筛选出的满足所述查询模块对应的子条件的结果数据。

借由上述技术方案,本发明提供的基于星形数据库的检索装方法及装置,通过将查询条件对应的多个查询模块整合成一个条件大集合,使得查询代码简化,不用再对不同条件在SQL中拼接不同的where条件,使得查询语句简单,利于代码的维护和查询条件的修改。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了本发明一个实施例中的星形数据库示意图;

图2示出了本发明实施例中的一种基于星形数据库的检索方法图;

图3示出了本发明另一个实施例中的基于星形数据库的检索方法流程图;

图4示出了本发明另一个实施例中的一种基于星形数据库的检索装置 示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

为了便于对本发明实施例的理解,下面对星形数据库进行简单介绍。在星型模式下,一个或多个事实表中可以引用任何数量的维表,事实表和维表可以按照不同层面协助用户进行分析和归类。其中,事实表中包含的是主要数据。事实表中通常会包括一个汇总的数据,如价格和单位出售量大。可以理解的是,在一个星型模式中有可能具有多个事实表。另外,维表通常是小于事实表,包括属性描述的事实。通常每个维度是一个单独的表,因此根据实际需要可以将维表加入到事实表中。

此外,星形数据库中通常会有一个简单的维表的主键,而事实表则会有多个,形成一组事实表。由于一个专门的多维数据库管理系统很可能既昂贵又不方便,星型模式是一种结合多个事实表和维度表的存储方式可以较全面的记录数据,因此成为常用的实现多维数据库(MDDB)功能的数据库形式。并且,星形数据库模式的查询较为简单,因为一个事实表不依赖于其他事实表表,因此加入和去除条件可以更简单直观。

例如,如图1所示,在需要查询满足“中性句子”和“正面句子”出现的“关键词”为“APEX”的所有的句子中对应的“正面词”和“热词”时,目前的解决方案仍然是通过不同条件,在SQL中拼接不同的where条件来进行解决。通过现有技术的这种方式,在星形数据库中的数据查询语句将会变得很复杂,而随着这种组合查询的增多,查询语句的复杂度将会进一步增大。此外,如果需要对某个条件进行修改,会批量的对所有涉及到该查询的地方进行修改,不便于代码的维护。并且,以传统的方式写出来的SQL语句不利于业务上的理解。

本发明一个实施例提供一种基于星形数据库的检索方法,如图2所示, 该方法可以包括以下步骤:

101、接收用户选择的查询条件。

其中,所述查询条件中包含多个查询模块,每个查询模块作为所述查询条件中的一个子条件,所述查询模块用于对星形数据库中的数据进行子条件过滤;。查询条件可以是多个选项由用户选择,也可以是用户输入的关键词,本实施例对此不做限定。

例如,所述多个查询模块包括关键词模块、情绪性质模块和词语热度模块。值得说明的是,查询模块除了可以包括上述关键词模块、情绪性质模块和词语热度模块之外,还可以包含其他模块,本实施例这里不再一一举例。

102、将所述查询条件解析得到一个条件大集合。

其中,所述条件大集合中包含多个子条件。

103、根据所述条件大集合查询数据库,得到所述大集合查询结果。

104、按照各个查询模块将所述大集合查询结果分类,得到每个所述查询模块对应的查询结果;所述查询模块对应的查询结果为从所述大集合查询结果中筛选出的满足所述查询模块对应的子条件的结果数据。

借由上述技术方案,本发明提供的基于星形数据库的检索装方法,通过将所述查询条件解析得到一个条件大集合,使得查询代码简化,不用再对不同条件在SQL中拼接不同的where条件,使得查询语句简单,利于代码的维护和查询条件的修改。

本发明另一实施例提供一种基于星形数据库的检索方法,如图3所示,该方法可以包括:

201、接收用户选择的查询条件。

202、判断所述查询条件是否符合规定格式;若所述查询条件不符合规定格式,则执行步骤201;若所述查询条件符合规定格式,则执行步骤203。

其中,所述规定格式为符合模块划分规则的格式。

203、将所述查询条件解析成一个条件大集合。

在本实施例中,以如图1所示的星形数据库为例,如果需要查询满足“中性句子”和“正面句子”出现的“关键词”为“APEX”的所有的句子中 对应的“正面词”和“热词”,可以先将所有维度对应成一个大的查询集合。其中,中性句子和正面句子属于情绪性质模块,APEX属于关键词模块,正面词和热词属于关键词热度模块,分别代表不同的维度。

具体的,在步骤203中把用户在页面上选择的查询条件,利用C#程序的XML生成方法,按照约定的格式,生成一个XML作为查询集合。

204、将已整合的所述条件大集合分解成多个条件小集合。

其中,将已整合的所述条件大集合分解成多个条件小集合具体可以包括:将所述条件大集合中每个所述查询模块对应的子条件提取出来,并分解成多个条件小集合。

在查询集合中,句子情绪可以设置为“中性句子”和“正面句子”,同时在关键词可以设置为“APEX”,将集合传入致数据库存储过程,存储过程通过上述查询集合进行解析出所有的查询条件。例如,利用SQL SERVER数据库中提供的XQuery语句,对上述XML中的各个节点进行解析,得到查询条件。然后,通过查询条件对数据库中句子进行过滤,得到所有符合查询条件的句子集合,即查询结果大集合。

205、根据所述条件小集合查询数据库,得到每个所述条件小集合对应的小集合查询结果。

206、将每个所述条件小集合查询结果合并,得到条件大集合查询结果。

207、按照各个查询模块将所述大集合查询结果分类,得到每个所述查询模块对应的查询结果;所述查询模块对应的查询结果为从所述大集合查询结果中筛选出的满足所述查询模块对应的子条件的结果数据。

例如,在步骤207中,将查询得到的查询结果大集合中的句子集合针对“正面词”和“热词”进行分类,从而分别可以得到“正面词”查询结果集和“热词”查询结果集。

本实施例中,利用集合的方法将查询条件、中间结果和查询结果分别按照集合来进行处理。可以很方便的添加和删除查询条件而不需要对整个的查询过程进行大范围的更改。

208、当接收到用户选择的附加查询条件时,将所述附加查询条件解析成对应的附加查询模块。

具体的,在添加查询条件时,只需要将添加的条件加入XML,数据库中的存储过程就会将添加的条件解析,并加入到SQL查询中。同时查询出来的中间结果集支持特殊处理,比如说查询的所有句子后,需要对这些句子再进行部分过滤等。

209、将所述附加查询模块加入到已有的所述查询模块中。

在本实施例中,上述添加和删除查询条件的方法,解耦了查询条件和查询结果的依赖关系,在修改查询条件时,不需要对中间结果和查询的最终结果的逻辑进行修订。具体的,查询条件的XML各个节点下代表的是查询的参数,如需添加查询条件,只需要在这些节点下添加参数,后台程序就会解析出该节点下新增的参数,而不需要对原有程序重新编写添加参数的逻辑。

210、当接收到用户删除已有查询条件时,使用用户删除的查询条件,对所述大集合查询结果进行过滤。

其中,所述按照各个查询模块将所述大集合查询结果分类为:按照各查询模块将过滤后的大集合查询结果分类。

借由上述技术方案,本发明提供的基于星形数据库的检索装方法,通过将所述查询条件解析得到一个条件大集合,使得查询代码简化,不用再对不同条件在SQL中拼接不同的where条件,使得查询语句简单,利于代码的维护和查询条件的修改。

本发明另一实施例提供一种基于星形数据库的检索装置,包括:接收模块31、解析单元32、查询单元33、分类单元34。

接收模块31,用于接收用户选择的查询条件,其中,所述查询条件中包含多个查询模块,每个查询模块作为所述查询条件中的一个子条件,所述查询模块用于对星形数据库中的数据进行子条件过滤。

解析单元32,用于将所述接收单元31接收到的查询条件解析得到一个条件大集合,所述条件大集合中包含多个子条件。

查询单元33,用于根据所述解析单元33解析得到的条件大集合查询数据库,得到所述大集合查询结果。

分类单元34,用于按照各个查询模块将所述查询单元33查询到的大 集合查询结果分类,得到每个所述查询模块对应的查询结果;所述查询模块对应的查询结果为从所述大集合查询结果中筛选出的满足所述查询模块对应的子条件的结果数据。

进一步可选的,该查询单元33可以包括:分解子单元331、查询子单元332、合并子单元333。

分解子单元331,用于将所述条件大集合中每个所述查询模块对应的子条件提取出来,并分解成多个条件小集合。

查询子单元332,用于根据所述条件小集合查询数据库,得到每个所述条件小集合对应的小集合查询结果。

合并子单元333,用于将每个所述条件小集合查询结果合并,得到条件大集合查询结果。

进一步可选的,该基于星形数据库的检索装置还可以包括:判断单元35。

判断单元35,用于在所述接收单元31接收用户选择的查询条件之后,判断所述查询条件是否符合规定格式;其中,所述规定格式为符合模块划分规则的格式。

若所述查询条件不符合规定格式,则触发所述接收单元31获取用户再次输入的查询条件。

若所述查询条件符合规定格式,则触发所述解析单元33执行所述将所述查询条件解析得到一个条件大集合。

进一步可选的,该基于星形数据库的检索装置还可以包括:附加单元36、加入单元37。

附加单元36,用于当所述接收单元31接收到用户选择的附加查询条件时,将所述附加查询条件解析成对应的附加查询模块。

加入单元37,用于将所述附加查询模块加入到已有的所述查询模块中。

进一步可选的,该基于星形数据库的检索装置还可以包括:删除单元38。

删除单元38,用于当所述接收单元接收到用户删除已有查询条件时, 使用用户删除的查询条件,对所述大集合查询结果进行过滤。

其中,所述按照各个查询模块将所述大集合查询结果分类为:按照各个查询模块将过滤后的大集合查询结果分类。

值得说明的是,在本实施例中的各单元及子单元的具体功能及其实现方式,可以参考上述图2和图3对应的方法实施例中的对应内容,本实施例这里不再重复赘述。

借由上述技术方案,本发明提供的基于星形数据库的检索装方法,通过将所述查询条件解析得到一个条件大集合,使得查询代码简化,不用再对不同条件在SQL中拼接不同的where条件,使得查询语句简单,利于代码的维护和查询条件的修改。

所述的装置包括处理器和存储器,上述接收模块、解析单元、查询单元、分类单元、判断单元、附加单元、加入单元、删除单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。

处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来基于星形数据库进行检索。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。

本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:接收用户选择的查询条件;其中,所述查询条件中包含多个查询模块,每个查询模块作为所述查询条件中的一个子条件;将所述查询条件解析得到一个条件大集合;根据所述条件大集合查询数据库,得到所述大集合查询结果;按照各个查询模块将所述大集合查询结果分类,得到每个所述查询模块对应的查询结果。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不 限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可 擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

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