CN100421114C - 基于关键字进行数据匹配查询的方法 - Google Patents
基于关键字进行数据匹配查询的方法 Download PDFInfo
- Publication number
- CN100421114C CN100421114C CNB2006100744568A CN200610074456A CN100421114C CN 100421114 C CN100421114 C CN 100421114C CN B2006100744568 A CNB2006100744568 A CN B2006100744568A CN 200610074456 A CN200610074456 A CN 200610074456A CN 100421114 C CN100421114 C CN 100421114C
- Authority
- CN
- China
- Prior art keywords
- pointers
- array
- execution
- inquired
- pointer element
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于关键字进行数据匹配查询的方法,包括:步骤11.从被查询字符串中提取一子字符串作为待匹配字符串;步骤12.在数据存储空间中查找与所述待匹配字符串相对应的关键字;步骤13.从所述关键字所对应的数据存储空间中提取对应的关键字数据;步骤14.如果所述待匹配字符串与被查询字符串相同,则输出关键字数据后结束;否则执行步骤15;步骤15.从所述被查询字符串中所述子字符串的后面,提取一字符并组合在所述子字符串之后,构成新的子字符串,将所述新的子字符串作为待匹配字符串,执行步骤12。通过本发明提供的数据查询方法,提高了查询效率,加快了查询速度,减少了***资源的耗费。
Description
技术领域
本发明涉及一种数据查询方法,尤其是一种确定最大匹配的关键字,并获取该关键字对应的关键字数据的查询方法。
背景技术
在计算机通信领域中,经常要应用到基于关键字的最大匹配的数据查询。例如,当开发一个电信级业务时,对(主叫/被叫)号码分析基本上是必须的。有时业务提供的特性需要对主叫或被叫号码进行最大匹配。众所周知:公安局的紧急号码通常是一个统一的电话号码,例如:110。无论任何人在任何地方拨打这个电话号码,通信网络都会在拨打人的电话与距离拨打该电话位置最近的公安局的紧急电话之间建立通信连接,而不是和其他公安局的紧急电话连接。这需要一个翻译过程,即:将统一的电话号码翻译成距离拨打该电话号码位置最近的公安局的紧急电话号码。在移动通信智能网业务提供一个叫做紧急号码翻译的功能中,具体是通过对主叫号码和前缀进行最大匹配,然后将呼叫路由到翻译后的紧急号码,实现上述的功能。
目前基于关键字的最大匹配的数据查询是应用数据库表,对一个指定字符串进行最大匹配查询,查询出所有可能的匹配数据,并从中选择出匹配程度最大的作为查询结果。例如,如果需要对被查询字符串“8030914909”进行最大匹配查询,必须以“8”,“80”,“803”,“8030”,“80309”,“803091”,“8030914”,“80309149”,“803091490”,“8030914909”为子字符串进行匹配查询,每对一个子字符串进行查询都要与数据存储空间中所有的关键字进行比较判断是否匹配,如果数据存储空间中存有100个关键字,则上述的对一个子字符串进行查询过程要做100次的比较,整个查询过程要做1000次的比较。
现有最大匹配查询采用以下方法:
Select * from emergency where calling=c_calling or
calling=c_calling[1,10] or calling=c_calling[1,9] or
calling=c_calling[1,8] or calling=c_calling[1,7] or
calling=c_calling[1,6] or calling=c_calling[1,5] or
calling=c_calling[1,4] or calling=c_calling[1,3] or
calling=c_calling[1,2] or calling=c_calling[1,1]
实际在数据库在执行这条SQL语句时就是使用每个条件calling=c_calling[1,n]逐个在表中查询,直到找到为止。
上述数据查询方法存在着如下的不足:由于在查询的过程中,每对一个子字符串进行查询都要与数据存储空间中所有的关键字进行比较判断是否匹配,因此,查询效率很低,查询速度慢,在数据量很大的情况下,对***资源的耗费巨大。
发明内容
本发明的目的是针对上述现有技术中的查询方法存在的查询效率低、查询速度慢、***资源的耗费大等不足,提供一种基于关键字进行数据匹配查询的方法,提高查询效率,加快查询速度,减少***资源的耗费。
为实现上述发明目的,本发明提供了一种基于关键字进行数据匹配查询的方法包括如下步骤:
步骤101、判断是否已经完成了被查询字符串中所有子字符的查询,如果是,则执行步骤107,否则执行步骤102;
步骤102、获取被查询字符串的第N个字符,其中N的初始值为1;
步骤103、判断被查询的指针数组的下标为所述被查询字符串的第N个字符的指针元素是否为空,如果是,则执行步骤107,否则,执行步骤104;
步骤104、判断被查询的指针数组的下标为被查询字符串的第N个字符的指针元素是否指向一链接对象,如果是,则执行步骤105,否则,该指针元素指向另一指针数组,执行步骤106;
步骤105、将数据查询结果更新为所述链接对象中存储的数据,将被查询的指针数组更新为所述链接对象中存储的指针元素指向的指针数组,并将N加1,然后执行步骤101;
步骤106、将被查询的指针数组更新为所述另一指针数组,并将N加1,然后执行步骤101;
步骤107、输出所述查询结果。
本发明还提供了一种基于关键字进行数据匹配查询的数据存储方法包括如下步骤:
步骤201、判断是否检测到要存储的关键字数据对应的关键字的最后一个字符,如果是,执行步骤208,如果不是,执行步骤202;
步骤202、获取所述关键字的第N个字符,其中N的初始值为1;
步骤203、判断被查询的指针数组的下标为所述关键字的第N个字符的指针元素是否为空,如果是,则执行步骤207,否则,执行步骤204;
步骤204、判断被查询的指针数组的下标为所述关键字的第N个字符的指针元素是否指向一链接对象,如果是,则执行步骤205,否则,该指针元素指向另一指针数组,执行步骤206;
步骤205、将所述被查询的指针数组更新为所述链接对象中存储的指针元素指向的指针数组,然后将N加1,执行步骤201;
步骤206、将所述被查询的指针数组更新为步骤204中的所述另一指针数组,并将N加1,然后执行步骤201;
步骤207、创建新的指针数组,并将所述被查询的指针数组的下标为所述关键字的第N个字符的指针元素更新为指向所述新的指针数组的指针元素,然后将所述被查询的指针数组更新为所述新的指针数组,将N加1,执行步骤201;
步骤208、判断被查询的指针数组的下标为所述关键字的第N个字符的指针元素是否为空,如果是,则执行步骤212,否则,执行步骤209;
步骤209、判断被查询的指针数组的下标为与所述关键字的第N个字符的指针元素是否指向一链接对象,如果是,则执行步骤210,否则,该指针元素指向另一指针数组,执行步骤211;
步骤210、将所述的链接对象中的数据更新为所述关键字数据,然后结束;
步骤211、创建一个新的链接对象,将所述关键字数据存储在该新的链接对象中,将所述被查询的指针数组的下标为所述关键字的第N个字符的指针元素更新为指向该新的链接对象的指针元素,并将步骤209中的指向所述另一指针数组的指针元素存储在该新的链接对象中,然后结束;
步骤212、创建一个新的链接对象,将所述关键字数据存储在该新的链接对象中,将所述被查询的指针数组的下标为所述关键字的第N个字符的指针元素更新为指向该新的链接对象的指针元素,然后结束。
本发明还提供了一种基于关键字进行数据匹配查询的数据删除方法,包括如下步骤:
步骤301、判断是否检测到要删除的关键字数据对应的关键字的最后一个字符,如果是,执行步骤307,如果不是,执行步骤302;
步骤302、获取关键字的第N个字符;
步骤303、判断被查询的指针数组的下标为所述关键字的第N个字符的指针元素是否为空,如果是,则结束,否则,执行步骤304;
步骤304、判断被查询的指针数组的下标为所述关键字的第N个字符的指针元素是否指向一链接对象,如果是,则执行步骤305,否则,该指针元素指向另一指针数组,执行步骤306;
步骤305、将所述被查询的指针数组更新为所述链接对象中的指针元素指向的指针数组,将N加1,然后执行步骤301;
步骤306、将所述被查询的指针数组更新为步骤304中所述另一指针数组,将N加1,然后执行步骤301;
步骤307、如果被查询的指针数组的下标为所述关键字的第N个字符的指针元素指向一链接对象,则执行步骤308,否则结束;
步骤308、如果该链接对象中包含指向另一指针数组的指针元素,则被查询的指针数组的下标为所述关键字的第N个字符的指针元素更新为该链接对象中包含指向另一指针数组的指针元素,并删除该链接对象,然后结束;如果该链接对象中不包含指向另一指针数组的指针元素,则直接删除该链接对象,然后结束。
通过本发明提供的数据查询方法,提高了查询效率,加快了查询速度,减少了***资源的耗费。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图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:
关键字 | 数据 |
63 | V1 |
6346 | V2 |
如图4所示,关键字63对应的数据V1存储在第2行的指针数组1-2中下标为3的指针元素指向的链接对象2-1中,由于在十叉树的数据存储结构中还有关键字6346,所以该链接对象中还要包含一个指向第3层节点的指针数组1-3的指针C1。而关键字6346对应的数据V2则存储在第4行的指针数组1-4中下标为6的指针元素指向的链接对象2-2中。基于上述的数据结构,由于关键字中的每一个数字与数据结构中的数组的下标对应,通过访问每个节点的指针数组中下标与关键字中的数字对应元素就可以找到关键字对应的数据。
基于本实施例的数据存储结构,其数据查询流程如图5所示,包括如下步骤:
步骤101、判断是否已经完成了被查询字符串中所有子字符的查询,如果是,则结束查询,否则执行步骤102;
步骤102、获取被查询字符串的第N个字符,其中N的初始值为1;
步骤103、判断被查询的指针数组的下标为所述被查询字符串的第N个字符的指针元素是否为空,如果是,则结束,否则,执行步骤104;
步骤104、判断被查询的指针数组的下标为被查询字符串的第N个字符的指针元素是否指向一链接对象,如果是,则执行步骤105,否则,执行步骤106;实际上,本步骤中,在判断为否的情况下,被查询的指针数组的下标为所述被查询字符串的第N个字符的指针元素指向另一指针数组。步骤103和104中的两个判断实际上是进行三种情况的选择,即:如果被查询的指针数组的下标为被查询字符串的第N个字符的指针元素指向一链接对象,则执行步骤105,如果被查询的指针数组的下标为所述被查询字符串的第N个字符的指针元素指向另一指针数组,则执行步骤106,如果被查询的指针数组的下标为所述被查询字符串的第N个字符的指针元素为空,则结束查询;因此,在判断操作上可以有多种顺序组合,并不限于本实施例中的流程。
步骤105、将数据查询结果更新为所述链接对象中存储的数据,将被查询的指针数组更新为所述链接对象中存储的指针指向的指针数组,并将N加1,然后执行步骤101;最大匹配查询就是要找到与被查询字符串匹配程度最高的关键字对应的存储数据作为最终的查询结果,例如,在KCT树中存有654对应的数据,也存有65478对应的数据,则在对654789的最大匹配查询中,就会先后获得两个关键字数据,则以65478对应的数据为最终的查询结果。
步骤106、将被查询的指针数组更新为所述另一指针数组,并将N加1,然后执行步骤101;
在实际的数据存储中,如果第N层节点的指针数组中的下标为X的指针元素为空,说明在关键字中,第N个元素往后的组合的字关键字没有对应的存储数据,例如,关键字89624,如果查询到第3层对应的指针数组中的下标为6的元素的为空,则说明关键字896、8962、89624都没有对应的数据存储。另外,由于本方法是针对被查询字符串全为数字的情况进行查询的,所以,为了避免误操作,在所述步骤101之前还包括:判断所述被查询字符串中是否只包含数字,如果是,则执行步骤101,否则结束。
下面对字符串6356123和6346123进行匹配查询为例来进一步说明具体的查询过程:KCT中有关键字63和6346及对应的关键字数据,6356123只能匹配到63,6346123可以匹配到6346关键字。
1)对6356123进行匹配查询:访问第1层节点的指针数组1-1的下标为6的指针元素,该指针元素指向下一层节点的指针数组1-2;然后访问指针数组1-2的下标为3的指针元素,该指针元素指向一链接对象2-1,访问该链接对象,从中提出出数据V1,并通过指针C1找到下一层节点的指针数组1-3,依次再向后查询,整个字符串都查询完后,只获取到V1,因此将V1作为最终的查询结果。
2)对6346123进行匹配查询:访问第1层节点的指针数组1-1的下标为6的指针元素,该指针元素指向下一层节点的指针数组1-2;然后访问指针数组1-2的下标为3的指针元素,该指针元素指向一链接对象2-1,访问该链接对象,从中提取出数据V1暂时作为6346对应的最大匹配的查询结果,由于关键字3不是关键字中的最后一个数字,所以还要再继续向下查询,提取该链接对象2-1中指针C1,该指针指向第3层的指针数组1-3,访问指针数组1-3中下标为4的指针元素,该指针元素指向下一层节点的指针数组1-4,访问指针数组1-4中下标为6的指针元素,该指针元素指向链接对象2-2,由于已经查询到关键字的最后一个数字,所以提取链接对象2-2中的V2作为最终的查询结果,如果指针数组1-4中下标为6的指针元素没有指向一个链接对象,依次再向后查询,整个字符串都查询完后,没有再获取到新的关键字数据,因此,将V2作为最终的查询结果。
基于本实施例的数据存储结构,其数据的存储流程如图6所示,包括如下步骤:
步骤201、判断是否检测到要存储的关键字数据对应的关键字的最后一个字符,如果是,执行步骤208,如果不是,执行步骤202;
步骤202、获取所述关键字的第N个字符,其中N的初始值为1;
步骤203、判断被查询的指针数组的下标为所述关键字的第N个字符的指针元素是否为空,如果是,则执行步骤207,否则,执行步骤204;
步骤204、判断被查询的指针数组的下标为被查询字符串的第N个字符的指针元素是否指向一链接对象,如果是,则执行步骤205,否则,执行步骤206;实际上,本步骤中,在判断为否的情况下,被查询的指针数组的下标为所述被查询字符串的第N个字符的指针元素指向另一指针数组。步骤203和204中的两个判断实际上是进行三种情况的选择,即:如果被查询的指针数组的下标为被查询字符串的第N个字符的指针元素指向一链接对象,则执行步骤205,如果被查询的指针数组的下标为所述被查询字符串的第N个字符的指针元素指向另一指针数组,则执行步骤206,如果被查询的指针数组的下标为所述被查询字符串的第N个字符的指针元素为空,则执行步骤207;因此,在判断操作上可以有多种顺序组合,并不限于本实施例中的流程。
步骤205、将所述被查询数组更新为所述链接对象中存储的指针指向的指针数组,然后将N加1,执行步骤201;
步骤206、将被查询的指针数组更新为所述另一指针数组,并将N加1,然后执行步骤201;
步骤207、创建新的指针数组,并将所述被查询的指针数组的下标为所述关键字的第N个字符的指针元素更新为指向所述新的指针数组的指针,然后将所述被查询数组更新为所述新的指针数组,将N加1,执行步骤201;
步骤208、判断被查询的指针数组的下标为所述关键字的第N个字符的指针元素是否为空,如果是,则执行步骤212,否则,执行步骤209;
步骤209、判断被查询的指针数组的下标为被查询字符串的第N个字符的指针元素是否指向一链接对象,如果是,则执行步骤210,否则,执行步骤211;实际上,本步骤中,在判断为否的情况下,被查询的指针数组的下标为所述被查询字符串的第N个字符的指针元素指向另一指针数组。步骤208和208中的两个判断实际上是进行三种情况的选择,即:如果被查询的指针数组的下标为被查询字符串的第N个字符的指针元素指向一链接对象,则执行步骤210,如果被查询的指针数组的下标为所述被查询字符串的第N个字符的指针元素指向另一指针数组,则执行步骤211,如果被查询的指针数组的下标为所述被查询字符串的第N个字符的指针元素为空,则执行步骤212;因此,在判断操作上可以有多种顺序组合,并不限于本实施例中的流程。
步骤210、将所述的链接对象中的数据更新为所述关键字数据,然后结束;
步骤211、创建一个新的链接对象,将所述关键字数据存储在该链接对象中,将所述被查询的指针数组的下标为所述关键字的第N个字符的指针元素更新为指向该链接对象的指针,并将所述指向另一指针数组的指针存储在该链接对象中,然后结束;
步骤212、创建一个新的链接对象,将所述关键字数据存储在该链接对象中,将所述被查询的指针数组的下标为所述关键字的第N个字符的指针元素更新为指向该链接对象的指针,然后结束;
存储的过程实际上包括了定位存储的位置,和数据存储两部分,定位存储位置实际上和数据的查询过程是一样的,上述步骤202-207的循环过程就是定位存储位置的过程,步骤208-212为定位完存储位置后的数据存储的过程。
另外,在存储过程中,也可以对要存储数据对应的关键字是否只包含数字进行检验,具体为在所述步骤201前还包括判断所述关键字中是否只包含数字,如果是,则执行步骤201,否则结束。
基于本实施例的数据存储结构,其数据的删除流程如图7所示,包括如下步骤:
步骤301、判断是否检测到要删除的关键字数据对应的关键字的最后一个字符,如果是,执行步骤307,如果不是,执行步骤302;
步骤302、获取关键字的第N个字符;
步骤303、判断被查询的指针数组的下标为所述关键字的第N个字符的指针元素是否为空,如果是,则结束,否则,执行步骤304;
步骤304、判断被查询的指针数组的下标为被查询字符串的第N个字符的指针元素是否指向一链接对象,如果是,则执行步骤305,否则,执行步骤306;实际上,本步骤中,在判断为否的情况下,被查询的指针数组的下标为所述被查询字符串的第N个字符的指针元素指向另一指针数组。步骤303和304中的两个判断实际上是进行三种情况的选择,即:如果被查询的指针数组的下标为被查询字符串的第N个字符的指针元素指向一链接对象,则执行步骤305,如果被查询的指针数组的下标为所述被查询字符串的第N个字符的指针元素指向另一指针数组,则执行步骤306,如果被查询的指针数组的下标为所述被查询字符串的第N个字符的指针元素为空,则结束;因此,在判断操作上可以有多种顺序组合,并不限于本实施例中的流程。
步骤305、将所述被查询的指针数组更新为所述链接对象中的指针指向的指针数组,将N加1,然后执行步骤301;
步骤306、将所述被查询的指针数组更新为所述另一指针数组,将N加1,然后执行步骤301;
步骤307、如果被查询的指针数组的下标为所述关键字的第N个字符的指针元素指向一链接对象,则执行步骤308,否则结束;
步骤308、如果该链接对象中包含指向另一指针数组的指针,则被查询的指针数组的下标为所述关键字的第N个字符的指针元素更新为该链接对象中包含指向另一指针数组的指针,并删除该链接对象,然后结束;如果该链接对象中不包含指向另一指针数组的指针,则直接删除该链接对象,然后结束。
删除的过程也包含了定位要删除的数据的位置和删除数据两部分,定位要删除的数据的位置和存储过程中的定位过程是一致的,在此不赘述。
在所述步骤301前还可以包括:
判断所述关键字中是否只包含数字,是,则执行步骤301,否则结束。
本发明的查询方法可以应用在很多场合,例如背景技术中提到的紧急号码翻译,如下表所示,可将紧急号码进行如下配置:
表2:
紧急号码 | 区号 | 翻译的号码 |
100 | 080 | 0805667890 |
100 | 022 | 0229089780 |
100 | 011 | 0115678902 |
101 | 080 | 0803456779 |
101 | 022 | 0227658902 |
101 | 011 | 0115980789 |
其中区号就是关键字,而翻译的号码就是该关键字对应的数据,为满足这个特性,需要为每个紧急号码分配一个KCT。所以,紧急号码100对应一个KCT,101对应一个KCT。100对应的关键字及关键字对应的数据如下所示:
表3:
Key | Value |
080 | 0805667890 |
022 | 0229089780 |
011 | 0115678902 |
这样当智能网的服务器收到一个用户终端拨的110报警号码后,根据该终端的号码来进行最大匹配的数据查询,例如该终端的号码为0805645369,在进行最大匹配的数据查询中,就会得到080对应的0803456779(该号码为用户终端所在地区的警局号码),这样将报警电话直接转接到该警局。
另一个应用场景是会话管理。如果会话ID是一个整数,它就可以作为关键字,会话相关数据就是该关键字对应的数据。可以通过本发明的数据查询方法进行快速的查许,找到会话ID对应的数据。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。
Claims (3)
1. 一种基于关键字进行数据匹配查询的方法,其特征在于,包括如下步骤:
步骤101、判断是否已经完成了被查询字符串中所有子字符的查询,如果是,则执行步骤107,否则执行步骤102;
步骤102、获取被查询字符串的第N个字符,其中N的初始值为1;
步骤103、判断被查询的指针数组的下标为所述被查询字符串的第N个字符的指针元素是否为空,如果是,则执行步骤107,否则,执行步骤104;
步骤104、判断被查询的指针数组的下标为被查询字符串的第N个字符的指针元素是否指向一链接对象,如果是,则执行步骤105,否则,该指针元素指向另一指针数组,执行步骤106;
步骤105、将数据查询结果更新为所述链接对象中存储的数据,将被查询的指针数组更新为所述链接对象中存储的指针元素指向的指针数组,并将N加1,然后执行步骤101;
步骤106、将被查询的指针数组更新为所述另一指针数组,并将N加1,然后执行步骤101;
步骤107、输出所述查询结果。
2. 一种基于关键字进行数据匹配查询的数据存储方法,其特征在于,包括如下步骤:
步骤201、判断是否检测到要存储的关键字数据对应的关键字的最后一个字符,如果是,执行步骤208,如果不是,执行步骤202;
步骤202、获取所述关键字的第N个字符,其中N的初始值为1;
步骤203、判断被查询的指针数组的下标为所述关键字的第N个字符的指针元素是否为空,如果是,则执行步骤207,否则,执行步骤204;
步骤204、判断被查询的指针数组的下标为所述关键字的第N个字符的指针元素是否指向一链接对象,如果是,则执行步骤205,否则,该指针元素指向另一指针数组,执行步骤206;
步骤205、将所述被查询的指针数组更新为所述链接对象中存储的指针元素指向的指针数组,然后将N加1,执行步骤201;
步骤206、将所述被查询的指针数组更新为步骤204中的所述另一指针数组,并将N加1,然后执行步骤201;
步骤207、创建新的指针数组,并将所述被查询的指针数组的下标为所述关键字的第N个字符的指针元素更新为指向所述新的指针数组的指针元素,然后将所述被查询的指针数组更新为所述新的指针数组,将N加1,执行步骤201;
步骤208、判断被查询的指针数组的下标为所述关键字的第N个字符的指针元素是否为空,如果是,则执行步骤212,否则,执行步骤209;
步骤209、判断被查询的指针数组的下标为所述关键字的第N个字符的指针元素是否指向一链接对象,如果是,则执行步骤210,否则,该指针元素指向另一指针数组,执行步骤211;
步骤210、将所述的链接对象中的数据更新为所述关键字数据,然后结束;
步骤211、创建一个新的链接对象,将所述关键字数据存储在该新的链接对象中,将所述被查询的指针数组的下标为所述关键字的第N个字符的指针元素更新为指向该新的链接对象的指针元素,并将步骤209中的指向所述另一指针数组的指针元素存储在该新的链接对象中,然后结束;
步骤212、创建一个新的链接对象,将所述关键字数据存储在该新的链接对象中,将所述被查询的指针数组的下标为所述关键字的第N个字符的指针元素更新为指向该新的链接对象的指针元素,然后结束。
3. 一种基于关键字进行数据匹配查询的数据删除方法,其特征在于,包括如下步骤:
步骤301、判断是否检测到要删除的关键字数据对应的关键字的最后一个字符,如果是,执行步骤307,如果不是,执行步骤302;
步骤302、获取关键字的第N个字符;
步骤303、判断被查询的指针数组的下标为所述关键字的第N个字符的指针元素是否为空,如果是,则结束,否则,执行步骤304;
步骤304、判断被查询的指针数组的下标为所述关键字的第N个字符的指针元素是否指向一链接对象,如果是,则执行步骤305,否则,该指针元素指向另一指针数组,执行步骤306;
步骤305、将所述被查询的指针数组更新为所述链接对象中的指针元素指向的指针数组,将N加1,然后执行步骤301;
步骤306、将所述被查询的指针数组更新为步骤304中所述另一指针数组,将N加1,然后执行步骤301;
步骤307、如果被查询的指针数组的下标为所述关键字的第N个字符的指针元素指向一链接对象,则执行步骤308,否则结束;
步骤308、如果该链接对象中包含指向另一指针数组的指针元素,则被查询的指针数组的下标为所述关键字的第N个字符的指针元素更新为该链接对象中包含指向另一指针数组的指针元素,并删除该链接对象,然后结束;如果该链接对象中不包含指向另一指针数组的指针元素,则直接删除该链接对象,然后结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100744568A CN100421114C (zh) | 2006-04-21 | 2006-04-21 | 基于关键字进行数据匹配查询的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100744568A CN100421114C (zh) | 2006-04-21 | 2006-04-21 | 基于关键字进行数据匹配查询的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1967528A CN1967528A (zh) | 2007-05-23 |
CN100421114C true CN100421114C (zh) | 2008-09-24 |
Family
ID=38076301
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100744568A Expired - Fee Related CN100421114C (zh) | 2006-04-21 | 2006-04-21 | 基于关键字进行数据匹配查询的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100421114C (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103425739B (zh) * | 2013-07-09 | 2016-09-14 | 国云科技股份有限公司 | 一种字符串匹配方法 |
CN105426519B (zh) * | 2015-12-04 | 2018-12-14 | 河海大学 | 一种用于离线搜索的小规模索引数据存储方法 |
CN110969816A (zh) * | 2019-12-26 | 2020-04-07 | 湖北创想云科技有限公司 | 一种网上报警***及报警方法 |
CN113821211B (zh) * | 2021-09-17 | 2023-06-27 | 杭州迪普科技股份有限公司 | 命令解析方法、装置、存储介质和计算机设备 |
CN116303405B (zh) * | 2023-05-12 | 2023-11-10 | 深圳竹云科技股份有限公司 | 一种数据查重方法、装置、计算机设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030025621A1 (en) * | 2001-08-02 | 2003-02-06 | Jan Christoffersson | Method and apparatus for fast longest match search |
CN1435031A (zh) * | 1999-12-10 | 2003-08-06 | 睦塞德技术公司 | 最长匹配地址查询的方法和装置 |
US20040008634A1 (en) * | 2002-05-31 | 2004-01-15 | Vijay Rangarajan | Method and apparatus for generating and using enhanced tree bitmap data structures in determining a longest prefix match |
CN1477559A (zh) * | 2002-08-23 | 2004-02-25 | 华为技术有限公司 | 一种实现长字符串前缀匹配的方法 |
-
2006
- 2006-04-21 CN CNB2006100744568A patent/CN100421114C/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1435031A (zh) * | 1999-12-10 | 2003-08-06 | 睦塞德技术公司 | 最长匹配地址查询的方法和装置 |
US20030025621A1 (en) * | 2001-08-02 | 2003-02-06 | Jan Christoffersson | Method and apparatus for fast longest match search |
US20040008634A1 (en) * | 2002-05-31 | 2004-01-15 | Vijay Rangarajan | Method and apparatus for generating and using enhanced tree bitmap data structures in determining a longest prefix match |
CN1477559A (zh) * | 2002-08-23 | 2004-02-25 | 华为技术有限公司 | 一种实现长字符串前缀匹配的方法 |
Non-Patent Citations (2)
Title |
---|
数据结构Trie及其应用. 郑丽英.现代计算机,第总第193期. 2004 |
数据结构Trie及其应用. 郑丽英.现代计算机,第总第193期. 2004 * |
Also Published As
Publication number | Publication date |
---|---|
CN1967528A (zh) | 2007-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107784044B (zh) | 表数据查询方法及装置 | |
CN101398844B (zh) | 资源文件的搜索方法及移动终端 | |
CN100589644C (zh) | 一种呼叫处理***及其方法 | |
CN100421114C (zh) | 基于关键字进行数据匹配查询的方法 | |
CN103345521A (zh) | 一种在哈希表数据库中处理键值的方法和装置 | |
CN101986672B (zh) | 一种信息处理方法及装置 | |
CN104580448A (zh) | 信息推送方法和装置 | |
CN101320376B (zh) | 一种数据库搜索方法、***及移动通信终端 | |
CN101420681B (zh) | 一种业务管理平台下处理多渠道请求订购的方法和装置 | |
CN104035943A (zh) | 存储数据的方法及相应服务器 | |
EP1781005B1 (en) | Centralized personal directory scheme for communications networks | |
CN101778124A (zh) | 移动客户端访问互联网的方法和页面访问服务器 | |
CN102214214B (zh) | 数据关系的处理方法、装置及移动通讯终端 | |
CN101072252A (zh) | 在移动通信终端上识别手机号码属地的方法和装置 | |
CN115686497A (zh) | 业务开发数据管理方法、开发引擎、电子设备和存储介质 | |
CN107729457A (zh) | 一种信息智能检索的方法、装置及存储介质 | |
KR20140073073A (ko) | 전화번호 조회 방법 및 시스템 | |
CN102523537A (zh) | 基于企业总机***的通信业务处理方法及企业总机*** | |
CN102567121A (zh) | 实现融合通信的方法和装置 | |
CN101645994A (zh) | 集团电话***、中心机以及呼叫方法 | |
CN101692235A (zh) | 一种数据查询的方法、装置及移动终端 | |
CN106850922B (zh) | 针对通讯号码的处理方法、***及其设备 | |
CN110569456A (zh) | Web端数据离线缓存方法及装置、电子设备 | |
KR100693721B1 (ko) | 완전 해싱 알고리즘을 사용한 데이터베이스 가속 장치 및방법 | |
CN106960028A (zh) | 一种终端文件的管理方法及管理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080924 Termination date: 20130421 |