发明内容
本发明要解决的问题是提出一种IP词典检索方法,以提高检索速度;本发明还提出一种查词引擎装置,以同时兼容对传统词典与IP词典的检索。
为解决上述技术问题,本发明的目的是通过以下技术方案实现的:
1)获取IP地址形式的查找关键字;
2)依据所述关键字所预置的地址段,获取该地址段的预设的临界IP地址;
3)获取所述临界IP地址对应的解释数据。
其中,步骤2)之后还包括:
2a)由所述的临界IP地址获取对应的解释数据的偏移地址。
其中,所述IP词典包括扩展数据,所述扩展数据记录了预设的临界IP地址,步骤2)在所述扩展数据中进行。
其中,预设临界IP地址的方法为:
a)将IP词典中的所有关键字排序;
b)顺序获取每一组连续且解释数据相同的关键字中的一个关键字作为临界IP地址。
其中,步骤a)具体为:将IP词典中的所有关键字按升序排列;或者,按降序排列。
其中,步骤b)具体为:顺序获取每一组连续且解释数据相同的关键字中的第一个关键字或者最后一个关键字。
其中,所述IP词典的关键字只包括临界IP地址。
其中,获取临界IP地址的方法是二分法或者排序二叉树法。
本发明还提供了一种查词引擎装置,该查词引擎装置包括:
词典类型判断模块:用于判断用户选择欲检索的目标词典类型,若是IP词典,则将欲检索关键字发送到前置检索模块;若是传统词典,则将欲检索关键字发送到检索模块;
前置检索模块:用于对IP词典的扩展索引进行检索,由关键字获取临界关键字,发送临界关键字到检索模块;
检索模块:用于接收到关键字或者临界关键字后进行检索,返回解释数据。
从以上技术方案可以看出,本发明具有以下有益效果:本发明在检索IP词典时,检索的关键字是临界IP地址,因为临界IP地址的数量远少于IP词典的关键字数量,所以提高了检索速度;本发明的临界IP地址的选取方法灵活多样,包括升序排列选取第一个关键字、升序排列选取最后一个关键字、降序排列选取第一个关键字、及降序排列选取最后一个关键字等;本发明选取临界IP地址作为关键字,减少了存储空间;由于本发明中提供的查词引擎装置中,设置了词典类型判断模块,当目标词典是IP词典时,则由前置检索模块进行处理后,再由检索模块进行处理,因此本发明的查词引擎可以同时适用于对IP词典关键字和传统词典关键字的检索。
具体实施方式
IP词典除了有关键字数量大的特点外,还有以下几个特点:
1、关键字与解释数据不是一一对应;
2、关键字之间具有连续性及相关性。
也就是说,将IP词典的关键字顺序排列后,IP词典具有连续的多个关键字对应一个解释数据的特点,例如将IP地址以升序排列,那么58.32.1.1至58.32.19.255之间的所有IP地址的地理地址都为上海市黄浦/卢湾区,58.60.1.1至58.60.255.255之间的所有IP地址的地理地址都为广东省深圳市。
本发明根据IP词典的以上特点,对IP词典的检索方法提出了新的方案。本发明的核心思想为:首先获取IP地址形式的查找关键字;再依据所述关键字所预置的地址段,获取该地址段的预设的临界IP地址;最后由所述的临界IP地址获取对应的解释数据的偏移地址,根据解释数据的偏移地址获取所述临界IP地址对应的解释数据。
下面参照图1所示的流程图描述根据本发明对IP词典进行重新组织的方法的一实施例。
如图1所示为本发明对IP词典进行重新组织的方法的一实施例的流程图,其具体为:
101)流程开始;
102)将IP词典中所有的关键字以升序顺序排列;
升序顺序排列即为按照所有关键字对应的二进制或十进制数据的大小进行由小到大的排列;
103)获取每一组连续且解释数据相同的关键字中的第一个关键字,称此关键字为临界关键字;
通过这一步骤,将大量的连续的相关的关键字转化成了独立的离散的关键字,大大降低了关键字的数量;
104)将上一步骤获取的临界关键字及其对应的解释数据组织成词库文件;
该词库文件的格式与传统词典格式相同,如表一所示;
表一
其中:
词典类型:用于标识当前词典的类型,例如英汉词典,汉英词典,IP词典等;
词典校验信息:用于对当前词典的准确性及完整性进行校验;
词典索引:用于存储当前词典中的关键字以及关键字对应解释数据在数据区中的偏移地址,对于传统词典来说,词典索引存储的关键字是该词典中的关键字,对于IP词典来说,词典索引存储的关键字是临界关键字;
解释数据存储区:用于保存当前词典中关键字的解释数据;
105)流程结束。
以上为实现本发明对IP词典进行重新组织的方法的一个实施例的流程,实际上,在步骤102)中对关键字进行排序时也可采用降序的方法,即按照所有关键字对应的二进制或十进制数据的大小进行由大到小的排列;在步骤103)中获取临界关键字时,也可以获取每一组连续且解释数据相同的关键字中的最后一个关键字作为临界关键字。
综上所述,可以得出本发明对IP词典进行重新组织的方法至少还应该包括三种方式,以下仅说明他们之间的区别步骤:
方式二:
102`)将IP词典中所有的关键字以升序顺序排列;
103`)获取每一组连续且解释数据相同的关键字中的最后一个关键字,称此关键字为临界关键字;
方式三:
102``)将IP词典中所有的关键字以降序顺序排列;
103``)获取每一组连续且解释数据相同的关键字中的第一个关键字,称此关键字为临界关键字;
方式四:
102```)将IP词典中所有的关键字以降序顺序排列;
103```)获取每一组连续且解释数据相同的关键字中的最后一个关键字,称此关键字为临界关键字。
本发明还提出了一种IP词典检索方法,应用于前述的对IP词典进行重新组织后的新IP词典,如图2所示为该方法的一实施例的流程图。
下面,如图2所示,该方法包括:
201)流程开始;
202)在新IP词典索引中获取关键字对应的临界关键字;
203)获取临界关键字对应的解释数据的偏移,根据解释数据的偏移获取解释数据,输出该解释数据;
204)流程结束;
其中,步骤202)中获取关键字对应的临界关键字时可以采用二分法,图3所示即为采用二分法获取关键字对应的临界关键字时的流程图,其具体为:
301)输入关键字;
302)设置当前区间最小索引序号S1=区间最小索引序号SMIN;
当前区间最大索引序号S2=区间最大索引序号SMAX;
当前索引序号S=「(S1+S2)/2」;
其中SMIN、SMAX分别表示索引序号的最小和最大值;「」为取整符号;该步骤对S1、S2、S进行初始化;
303)判断输入的关键字是否大于或等于S对应的临界关键字,如果否,进入步骤304);如果是,进入步骤305);
304)设置S2=S;
S=「(S1+S2)/2」;
进入步骤503);
305)判断输入的关键字是否小于S的下一个序号对应的临界值,如果否,进入步骤306);如果是,进入步骤307);
306)设置S1=S;
S=「(S1+S2)/2」;
进入步骤503;
307)获取S对应的临界关键字,流程结束。
下面结合例子说明如何通过上述的二分法获取临界关键字。由于IP词典关键字数量极大,所以下面的例子只假设一个较小的区间以作说明。
如表所示,假设索引的内容如下表:
临界值 |
1 |
10 |
15 |
20 |
29 |
35 |
40 |
50 |
80 |
100 |
103 |
150 |
160 |
200 |
索引序号 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
表二
用户欲查找关键字64对应的临界关键字,下表列出了根据图4所示的方法每次查找到的当前索引序号及最终找到的结果。
临界值 |
1 |
10 |
15 |
20 |
29 |
35 |
40 |
50 |
80 |
100 |
103 |
150 |
160 |
200 |
索引序号 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
第一次查找 |
|
|
|
|
|
|
↑ |
|
|
|
|
|
|
|
第二次查找 |
|
|
|
|
|
|
|
|
|
↑ |
|
|
|
|
第三次查找 |
|
|
|
|
|
|
|
↑ |
|
|
|
|
|
|
临界关键字 |
|
|
|
|
|
|
|
↑ |
|
|
|
|
|
|
表三
本发明不仅可以通过二分法在IP词典扩展索引中获取关键字对应的临界关键字,还可以通过其他方法,例如排序二叉树法。
下面参照图4所示的流程图描述根据本发明对IP词典进行重新组织的方法的又一实施例。
如图4所示为本发明对IP词典进行重新组织的方法的又一实施例的流程图,应用下述方法组织后的IP词典增加了扩展数据以实现与传统词典的兼容,其具体为:
401)流程开始;
402)将IP词典中所有的关键字以升序顺序排列;
升序顺序排列即为按照所有关键字对应的二进制或十进制数据的大小进行由小到大的排列;
403)获取每一组连续且解释数据相同的关键字中的第一个关键字,称此关键字为临界关键字;
通过这一步骤,将大量的连续的相关的关键字转化成了独立的离散的关键字,大大降低了关键字的数量;
404)将上一步骤获取的临界关键字及其对应的解释数据组织成词库文件;
405)创建扩展数据,追加到该词库文件;
如表四所示即为该追加扩展数据后的词库文件的数据结构,其中虚线框内部分即为扩展数据:
表四
其中:
词典类型:用于标识当前词典的类型,例如英汉词典,汉英词典,IP词典等;
词典校验信息:用于对当前词典的准确性及完整性进行校验;
词典索引:用于存储当前词典中的关键字以及关键字对应解释数据在数据区中的偏移地址,对于传统词典来说,词典索引存储的关键字是该词典中的关键字,对于IP词典来说,词典索引存储的关键字是临界关键字;
解释数据存储区:用于保存当前词典中关键字的解释数据;
扩展数据校验信息:用于对扩展索引的完整性及有效性进行校验;
扩展索引:用于将临界关键字以二进制形式进行顺序存储;
在后面所述的检索方法中,查词引擎将通过该扩展索引找到欲检索的关键字所对应的临界关键字;
扩展数据长度:记录扩展数据的长度,以方便确定扩展块和原词典块的数据大小和偏移;
406)流程结束。
以上为实现本发明对IP词典进行重新组织的方法的又一个实施例的流程,实际上,在步骤402)中对关键字进行排序时也可采用降序的方法,即按照所有关键字对应的二进制或十进制数据的大小进行由大到小的排列;在步骤403)中获取临界关键字时,也可以获取每一组连续且解释数据相同的关键字中的最后一个关键字作为临界关键字。
综上所述,可以得出本发明对IP词典进行重新组织的方法至少还应该包括三种方式,以下仅说明他们之间的区别步骤:
方式二:
402`)将IP词典中所有的关键字以升序顺序排列;
403`)获取每一组连续且解释数据相同的关键字中的最后一个关键字,称此关键字为临界关键字;
方式三:
402``)将IP词典中所有的关键字以降序顺序排列;
403``)获取每一组连续且解释数据相同的关键字中的第一个关键字,称此关键字为临界关键字;
方式四:
402```)将IP词典中所有的关键字以降序顺序排列;
403```)获取每一组连续且解释数据相同的关键字中的最后一个关键字,称此关键字为临界关键字。
本发明还提出了一种查词引擎装置,应用于前述的对IP词典进行重新组织后的新IP词典以及传统词典,如图5所示为该查词引擎装置的一实施例的框图。
下面,参照图5描述该查词引擎装置,该查词引擎包括:
词典类型判断模块:用于接收用户欲检索的关键字,判断用户选择欲检索的目标词典类型,若是IP词典,则将欲检索关键字发送到前置检索模块;若是传统词典,则将欲检索关键字发送到检索模块;
前置检索模块:用于对IP词典的扩展索引进行检索,由关键字获取临界关键字;
检索模块:用于接收到关键字或者临界关键字后,进行检索,返回解释数据。
本发明还提出了一种IP词典检索方法,应用于前述的对IP词典进行重新组织后的新IP词典以及传统词典,如图6所示为该方法的又一实施例的流程图。
下面,如图3所示,该方法包括:
601)流程开始;
602)判断用户欲检索的目标词典类型,获取相应的词库文件,如果是IP词典,进入步骤603);如果不是,进入步骤604);
603)在IP词典扩展索引中获取关键字对应的临界关键字;
604)获取关键字或者临界关键字对应的解释数据的偏移,根据解释数据的偏移获取解释数据,输出该解释数据;
605)流程结束;
其中,步骤603)中获取关键字对应的临界关键字时可以采用二分法,所述二分法与前述的实施例中采用的二分法相同,在此不再赘述。
本发明不仅可以通过二分法在IP词典扩展索引中获取关键字对应的临界关键字,还可以通过其他方法,比如排序二叉树法。
以上对本发明所提供的IP词典检索方法及查词引擎装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。