基于关键字进行数据匹配查询的方法技术

技术编号:2842236 阅读:253 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种基于关键字进行数据匹配查询的方法,包括:步骤11、从被查询字符串中提取一子字符串作为待匹配字符串;步骤12、在数据存储空间中查找与所述待匹配字符串相对应的关键字;步骤13、从所述关键字所对应的数据存储空间中提取对应的关键字数据;步骤14、如果所述待匹配字符串与被查询字符串相同,则输出关键字数据后结束;否则执行步骤15;步骤15、从所述被查询字符串中所述子字符串的后面,提取一字符并组合在所述子字符串之后,构成新的子字符串,将所述新的子字符串作为待匹配字符串,执行步骤12。通过本发明专利技术提供的数据查询方法,提高了查询效率,加快了查询速度,减少了系统资源的耗费。

【技术实现步骤摘要】

本专利技术涉及一种数据查询方法,尤其是一种确定最大匹配的关键字,并获取该关键字对应的关键字数据的查询方法。
技术介绍
在计算机通信领域中,经常要应用到基于关键字的最大匹配的数据查询。例如,当开发一个电信级业务时,对(主叫/被叫)号码分析基本上是必须的。有时业务提供的特性需要对主叫或被叫号码进行最大匹配。众所周知公安局的紧急号码通常是一个统一的电话号码,例如110。无论任何人在任何地方拨打这个电话号码,通信网络都会在拨打人的电话与距离拨打该电话位置最近的公安局的紧急电话之间建立通信连接,而不是和其他公安局的紧急电话连接。这需要一个翻译过程,即将统一的电话号码翻译成距离拨打该电话号码位置最近的公安局的紧急电话号码。在移动通信智能网业务提供一个叫做紧急号码翻译的功能中,具体是通过对主叫号码和前缀进行最大匹配,然后将呼叫路由到翻译后的紧急号码,实现上述的功能。目前基于关键字的最大匹配的数据查询是应用数据库表,对一个指定字符串进行最大匹配查询,查询出所有可能的匹配数据,并从中选择出匹配程度最大的作为查询结果。例如,如果需要对被查询字符串“8030914909”进行最大匹配查询,必须以“8”,“80”,“803”,“8030”,“80309”,“803091”,“8030914”,“80309149”,“803091490”,“8030914909”为子字符串进行匹配查询,每对一个子字符串进行查询都要与数据存储空间中所有的关键字进行比较判断是否匹配,如果数据存储空间中存有100个关键字,则上述的对一个子字符串进行查询过程要做100次的比较,整个查询过程要做1000次的比较。现有最大匹配查询采用以下方法Select*from emergency where calling=c_calling orcalling=c_callingor calling=c_callingorcalling=c_callingor calling=c_callingorcalling=c_callingor calling=c_callingorcalling=c_callingor calling=c_callingorcalling=c_callingor calling=c_calling实际在数据库在执行这条SQL语句时就是使用每个条件calling=c_calling逐个在表中查询,直到找到为止。上述数据查询方法存在着如下的不足由于在查询的过程中,每对一个子字符串进行查询都要与数据存储空间中所有的关键字进行比较判断是否匹配,因此,查询效率很低,查询速度慢,在数据量很大的情况下,对系统资源的耗费巨大。
技术实现思路
本专利技术的目的是针对上述现有技术中的查询方法存在的查询效率低、查询速度慢、系统资源的耗费大等不足,提供一种,提高查询效率,加快查询速度,减少系统资源的耗费。为实现上述专利技术目的,本专利技术提供了一种包括如下步骤步骤11从被查询字符串中提取一子字符串作为待匹配字符串;所述提取的子字符串起始于所述被查询的字符串的第一个字符;步骤12在数据存储空间中查找与所述待匹配字符串相对应的关键字;步骤13从所述关键字所对应的数据存储空间中提取对应的关键字数据;步骤14如果所述待匹配字符串与被查询字符串相同,则输出关键字数据后结束;否则执行步骤15步骤15从所述被查询字符串中所述子字符串的后面,提取一字符并组合在所述子字符串之后,构成新的子字符串,将所述新的子字符串作为待匹配字符串,执行步骤12。通过本专利技术提供的数据查询方法,提高了查询效率,加快了查询速度,减少了系统资源的耗费。下面通过附图和实施例,对本专利技术的技术方案做进一步的详细描述。附图说明图1为本专利技术的的流程图;图2为本专利技术的的关键字数据存储流程图;图3为本专利技术的的关键字数据删除流程图;图4为本专利技术的具体实施例的数据存储结构示意图;图5为本专利技术的具体实施例数据查询的流程图;图6为本专利技术的具体实施例数据存储的流程图;图7为本专利技术的具体实施例数据删除的流程图。具体实施例方式为了实现快速的数据的查询,本专利技术应用KCT(Key Content Tree,基于关键字的内容树)树的数据结构来存储关键字以及与关键字对应的数据,如图1所示,基于KCT树的数据存储结构,本专利技术的数据查询方法包括如下步骤步骤11从被查询字符串中提取一子字符串作为待匹配字符串;所述提取的子字符串起始于所述被查询的字符串的第一个字符;步骤12在数据存储空间中查找与所述待匹配字符串相对应的关键字;步骤13从所述关键字所对应的数据存储空间中提取对应的关键字数据;步骤14如果所述待匹配字符串与被查询字符串相同,则输出关键字数据后结束;否则执行步骤15步骤15从所述被查询字符串中所述子字符串的后面,提取一字符并组合在所述子字符串之后,构成新的子字符串,将所述新的子字符串作为待匹配字符串,执行步骤12。在执行上述查询流程的同时,还可以包括关键字数据的存储流程,如图2所示,包括如下步骤步骤21、在数据存储空间中查找要存储的关键字数据对应的关键字,如果找到该关键字,执行步骤22,否则,执行步骤25;步骤22、判断该关键字对应的数据存储空间中是否存有数据,如果有,则执行步骤23,如果没有,则执行步骤24;步骤23、将该关键字对应的数据存储空间存储的关键字数据更新为要存储的关键字数据,结束;步骤24、将要存储的关键字数据存储在该关键字对应的数据存储空间中,结束;步骤25、将所述关键字存储到所述数据存储空间中,并在该数据存储空间中开辟该关键字对应的数据存储空间,将要存储的关键字数据存储到该关键字对应的数据存储空间中,结束。在执行上述查询流程的同时,还可以包括关键字数据的删除流程,如图3所示,包括如下步骤步骤31、在数据存储空间中查找要删除的关键字数据对应的关键字,如果找到该关键字,执行步骤32,否则,结束;步骤32、判断该关键字对应的数据存储空间中是否存有数据,如果有,则执行步骤33,如果没有,则结束;步骤33、将该关键字对应的数据存储空间中存储的关键字数据删除,结束。具体实施例在使用最大匹配的关键字中,通常每一位都是0~9的数字字符,因此在实际的应用中,一般应用十叉树的数据结构来存储关键字及对应的数据,该数据存储结构如图4所示,在十叉树中,每个节点有10个子节点,每个节点可以用包含10个指针元素的指针数组来实现。指针数组每一个指针元素的下标指示关键字上的一个数字。指针数组中存储的指针所指向内容有两种,第一种是指向下一层的节点对应的指针数组,另一种是指向一链接对象,该链接对象中存储有两部分内容,一部分为关键字对应的数据,另一部分为指向下一层节点的指针数组的指针。下面通过一个例子,来说明存储关键字及其对应的数据的数据结构,如下表所示表1 如图4所示,关键字63对应的数据V1存储在第2行的指针数组1-2中下标为3的指针元素指向的链接对象2-1中,由于在十叉树的数据存储结构中还有关键字6346,所以该链接对象中还要包含一个指向第3层节点的指针数组1-3的指针C1。而关键字6346对应的数据V2则存储在第4行的指针数组1-4中下标为6的指针元素指向的链接对象2-2中。基于上述的数据结构,由于关键字中的每一个数字与数据结构中的数组的本文档来自技高网
...

【技术保护点】
一种基于关键字进行数据匹配查询的方法,其特征在于包括如下步骤:步骤11、从被查询字符串中提取一子字符串作为待匹配字符串;所述提取的子字符串起始于所述被查询的字符串的第一个字符;步骤12、在数据存储空间中查找与所述待匹配字符串 相对应的关键字;步骤13、从所述关键字所对应的数据存储空间中提取对应的关键字数据;步骤14、如果所述待匹配字符串与被查询字符串相同,则输出关键字数据后结束;否则执行步骤15;步骤15、从所述被查询字符串中所述子字符串 的后面,提取一字符并组合在所述子字符串之后,构成新的子字符串,将所述新的子字符串作为待匹配字符串,执行步骤12。

【技术特征摘要】

【专利技术属性】
技术研发人员:艾石
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1