地理位置搜索引擎及其构建方法转让专利

申请号 : CN201010127869.4

文献号 : CN101789028A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张激扬关志达

申请人 : 苏州广达友讯技术有限公司

摘要 :

本发明涉及一种地理位置搜索引擎及其构建方法。该搜索引擎为四叉树形结构,其包括由上到下依次叠设的M个层,其中,第1层包括1个代表整个地图的四叉树节点,该四叉树节点包括1棵按搜索对象的至少一种属性建立的B树,第M.层分别包括4M-1个分别代表整个地图的1/4M-1的四叉树节点,每个四叉树节点包括0~1棵按搜索对象的至少一种属性建立的B树,即,第M层共包括(4M-1-X)棵B树,上述的M为自然数,其由从数据库倒入的数据量决定,X是因倒入第M层的数据中没有符合指定地理位置范围的数据而未建立的B树数量。该地理位置搜索引擎通过将代表搜索对象的多种属性的多个索引相复合构建而成。本发明可有效提高查找效率,减轻计算机负载,提高其响应速度。

权利要求 :

1.一种地理位置搜索引擎,其特征在于,该搜索引擎为四叉树形结构,其包括由上到下依次叠设的M个层,其中,第1层包括1个代表整个地图的四叉树节点,该四叉树节点包括1棵按搜索对象的至少一种属性建立的B树,第M层分别包括4M-1个分别代表整个地图的1/4M-1的四叉树节点,每个四叉树节点包括0~1棵按搜索对象的至少一种属性建立的B树,即,第M层共包括(4M-1-X)棵B树,上述的M为自然数,其由从数据库倒入的数据量决定,X是因倒入第M层的数据中没有符合指定地理位置范围的数据而未建立的B树数量。

2.根据权利要求1所述的地理位置搜索引擎,其特征在于,所述搜索引擎的四叉树形结构是在倒入数据的过程中同时生成的,其具体过程为:从数据库倒入数据,刚开始数据倒入停留在第一层建立B树,当数据量在第一层超过N时,第一层的B树在继续增加数据量的同时,开始向下分裂,判断数据属于第二层的哪颗B树,并倒入第二层,当第二层的某棵B树的数据量也达到N的时候,即也开始向下分裂,判断数据属于第三层的哪颗B树,并倒入到第三层中,以此类推,直至数据倒完,完成四叉树形结构的建立,上述的N代表各B树可承载的数据量。

3.根据权利要求1或2所述的地理位置搜索引擎,其特征在于,该搜索引擎包括M个层,其中:第1层包括代表整个地图的一个四叉树节点,该四叉树节点包含一棵按搜索对象的至少一种属性建立的B树;

第2层包括分别代表上述地图的四分之一的四个四叉树节点,该四个四叉树节点按田字型分布,每一四叉树节点包括0~1棵按搜索对象的至少一种属性建立的B树;

第3层包括十六个四叉树节点,其中,代表第2层中的四份地图之一的四分之一的四个四叉树节点按田字型分布,每一四叉树节点包括0~1棵按搜索对象的至少一种属性建立的B树;

第4、5、6......M层的结构以此类推。

4.如权利要求1所述地理位置搜索引擎的构建方法,其特征在于,该方法为:

采用将搜索对象的地理位置属性和至少另一种属性的索引相复合的方式,构建一个M层的四叉树;

从数据库倒入数据,最初数据倒入停留在包括1个四叉树节点的第1层,并在该四叉树节点上建立1棵B树;

当数据量在第1层超过N时,第1层的B树在继续增加数据量的同时,开始向下分裂,并判断数据属于第2层的四个四叉树节点的哪一个,而后倒入第二层,在相应的四叉树节点上建立B树;

当第二层的某棵B树的数据量也达到N时,也开始向下分裂,倒入到第三层,并在第3层的相应四叉树节点上建立B树;

以此类推,待数据倒入完成,即形成基于四叉树和B树相结合的地理位置搜索引擎,上述N为各B树可承载的数据量。

5.根据权利要求4所述的如权利要求1所述地理位置搜索引擎的构建方法,其特征在于,该方法中,若由第(M-1)层倒入第M层的数据中包含符合第M层的某个四叉树节点的搜索对象的指定地理位置属性的数据,则在该四叉树节点上建立B树,反之,则该四叉树节点上不会建立B树。

6.根据权利要求4所述的如权利要求1所述地理位置搜索引擎的构建方法,其特征在于,该方法中,是按搜索对象的至少另一种属性在四叉树节点上建立B树的。

7.根据权利要求4所述的如权利要求1所述地理位置搜索引擎的构建方法,其特征在于,所述地理位置搜索引擎包括M层,其中:第1层包括代表整个地图的一个四叉树节点,该四叉树节点包含一棵按搜索对象的至少另一种属性建立的B树;

第2层包括分别代表上述地图的四分之一的四个四叉树节点,该四个四叉树节点按田字型分布,每一四叉树节点包括0~1棵按搜索对象的至少另一种属性建立的B树;

第3层包括十六个四叉树节点,其中,代表第2层中的四份地图之一的四分之一的四个四叉树节点按田字型分布,每一四叉树节点包括0~1棵按搜索对象的至少另一种属性建立的B树;

第4、5、6......M层的结构以此类推。

说明书 :

技术领域

本发明涉及一种搜索引擎及其构建方法,具体涉及一种将对应于搜索对象的至少两种不同属性的索引相复合的地理位置搜索引擎及其构建方法。

背景技术

搜索引擎的数据库中有上千万的数据对象,每个对象都拥有自己最后一次在世界地图上出现的经纬度位置和时间戳,同时这些对象拥有其他一些属性,比如:年龄、性别等。若需要在某一个应用场景中用户需要在地图的某个范围内(比如在上海地区范围内)寻找性别是女,年龄在20-25岁的对象,并且按出现的时间倒序排列前100位,根据他们的经纬度显示在地图上。最终的效果是用户能根据自己的喜好来筛选指定地理范围内的对象,进行下一步操作。而现有的数据库技术(不管是oracle、mysql、informix等),想要在上千万,甚至上亿的对象中实现上述需求,计算量是非常大的。
具体而言,对于上述需求,现有的搜索引擎技术通常会选用两种方法进行数据库查询:
第一种方法是,数据库先要筛选出符合地理位置条件的对象(地理索引优先原则),然后把这些对象按时间进行排序,然后进行年龄、性别的匹配,最后得出结果。此方法适合地理范围较小时使用,例如只在上海的浦东机场搜索,可能满足结果的数据不足千条,则这些数据按时间排序会很快,搜索结果会很快得到。
第二种方法是,数据库先按时间倒序选出对象(时间索引优先原则),然后匹配对象的地理位置、年龄、性别。此方法适合地理范围较大时使用,比如在面积占整张地图80%的范围上寻找,那么此时先利用时间索引,很快得出倒序结果,把每个结果去匹配地理位置条件,满足的可能性很大,搜索结果也会很快得到。
但是在这两个方法选择的条件设置上是很困难的,关键就在于怎样划分地理范围较小或较大这两个概念.也许面积占整张地图80%的范围里没有一个对象,所有对象都集中在其他20%的范围里,那么要等匹配完所有对象才会的出搜索结果。或者极端情况在上海的浦东机场搜索,可能满足结果的数据有上百万条,那这些数据按时间排序的计算量也是非常大的,搜索时间也会很长。

发明内容

本发明的目的在于提出一种地理位置搜索引擎及其构建方法,其可有效提高查找效率,减轻计算机负载,提高其响应速度,从而克服现有技术中的不足。
为实现上述发明目的,本发明采用了如下技术方案:
一种地理位置搜索引擎,其特征在于,该搜索引擎为四叉树形结构,其包括由上到下依次叠设的M个层,其中,第1层包括1个代表整个地图的四叉树节点,该四叉树节点包括1棵按搜索对象的至少一种属性建立的B树,第M层分别包括4M-1个分别代表整个地图的1/4M-1的四叉树节点,每个四叉树节点包括0~1棵按搜索对象的至少一种属性建立的B树,即,第M层共包括(4M-1-X)棵B树,上述的M为自然数,其由从数据库倒入的数据量决定,X是因倒入第M层的数据中没有符合指定地理位置范围的数据而未建立的B树数量。
具体而言,所述搜索引擎的四叉树形结构是在倒入数据的过程中同时生成的,其具体过程为:
从数据库倒入数据,刚开始数据倒入停留在第一层建立B树,当数据量在第一层超过N时,第一层的B树在继续增加数据量的同时,开始向下分裂,判断数据属于第二层的哪颗B树,并倒入第二层,当第二层的某棵B树的数据量也达到N的时候,即也开始向下分裂,判断数据属于第三层的哪颗B树,并倒入到第三层中,以此类推,直至数据倒完,完成四叉树形结构的建立,上述的N代表各B树可承载的数据量。
该搜索引擎包括M个层,其中:
第1层包括代表整个地图的一个四叉树节点,该四叉树节点包含一棵按搜索对象的至少一种属性建立的B树;
第2层包括分别代表上述地图的四分之一的四个四叉树节点,该四个四叉树节点按田字型分布,每一四叉树节点包括0~1棵按搜索对象的至少一种属性建立的B树;
第3层包括十六个四叉树节点,其中,代表第2层中的四份地图之一的四分之一的四个四叉树节点按田字型分布,每一四叉树节点包括0~1棵按搜索对象的至少一种属性建立的B树;
第4、5、6......M层的结构以此类推。
如上所述地理位置搜索引擎的构建方法,其特征在于,该方法为:
采用将搜索对象的地理位置属性和至少另一种属性的索引相复合的方式,构建一个M层的四叉树;
从数据库倒入数据,最初数据倒入停留在包括1个四叉树节点的第1层,并在该四叉树节点上建立1棵B树;
当数据量在第1层超过N时,第1层的B树在继续增加数据量的同时,开始向下分裂,并判断数据属于第2层的四个四叉树节点的哪一个,而后倒入第二层,在相应的四叉树节点上建立B树;
当第二层的某棵B树的数据量也达到N时,也开始向下分裂,倒入到第三层,并在第3层的相应四叉树节点上建立B树;
以此类推,待数据倒入完成,即形成基于四叉树和B树相结合的地理位置搜索引擎,上述N为各B树可承载的数据量。
进一步的讲,该方法中,若由第(M-1)层倒入第M层的数据中包含符合第M层的某个四叉树节点的搜索对象的指定地理位置属性的数据,则在该四叉树节点上建立B树,反之,则该四叉树节点上不会建立B树。
该方法中,是按搜索对象的至少另一种属性在四叉树节点上建立B树的。
所述地理位置搜索引擎包括M层,其中:
第1层包括代表整个地图的一个四叉树节点,该四叉树节点包含一棵按搜索对象的至少另一种属性建立的B树;
第2层包括分别代表上述地图的四分之一的四个四叉树节点,该四个四叉树节点按田字型分布,每一四叉树节点包括0~1棵按搜索对象的至少另一种属性建立的B树;
第3层包括十六个四叉树节点,其中,代表第2层中的四份地图之一的四分之一的四个四叉树节点按田字型分布,每一四叉树节点包括0~1棵按搜索对象的至少另一种属性建立的B树;
第4、5、6......M层的结构以此类推。
本发明采用将搜索对象的地理位置索引和至少另一种属性(如时间属性等)的索引相复合的设计方式,即,在选择出符合搜索对象的地理位置属性的数据时,提前把这些数据按搜索对象的至少另一种属性排序,从而提高查找效率,从而解决了现有技术中计算机负载高,响应慢的问题。

附图说明

图1是本发明具体实施方式中地理位置搜索引擎的结构示意图。

具体实施方式

以下结合附图及具体实施方式对本发明的内容作进一步说明。
如图1所示,本实施例中地理位置搜索引擎是一四叉树形结构,其包括M层,其中每一层由若干B树组成,如,第1层代表整个地图,只有一个四叉树节点,该四叉树节点包含一棵按搜索对象的至少一种属性建立的B树,第2层是把第1层的地图按″田″字形平均分成四个节点,每个节点代表上一层的四分之一地图,在理想状态下,每一节点有一棵B树,共四棵B树,也是按搜索对象的至少一种属性建立的,第3层把第2层的每一份地图平均分成四份地图,每一份对应一棵B树,理想状态下共16棵B树,第4、5、6......M层的结构以此类推。
当然,需要指出的是,上述的四叉树结构是在倒入数据的过程中同时生成的,而不是在倒入数据之前就建立好的,其具体过程为:
从数据库倒入数据,刚开始数据倒入停留在第1层建立B树,当数据量在第1层超过N时,第1层的B树在继续增加数据量的同时,开始向下分裂,判断数据属于第2层的哪颗B树,倒入第2层,当第2层的某棵B树的数据量也达到N的时候也开始向下分裂倒入到第3层的B树中,以此类推,数据倒入完成,四叉树结构建立完成。
在该过程中,每一个搜索对象都有可能在四叉树结构中的几层中出现,也就是说数据会有一定的冗余度,随着数据的增加,冗余度会逐渐增大.但有效效果是当指定某一地理范围的时候,能迅速定位到四叉树结构的某一层进行搜索,而每一层的B树中的数据又是按至少一种属性排列的,所以可以很快找到待查数据。
同时需要说明的是,并不是每一层的B树数量都是满四叉树,比如第2层不一定是四棵B树,如果在″田″字形的左上角的口中没有符合此地理位置的数据,那这颗B树是不会建立起来的,另外,上述的N是根据数据量和服务器的配置而定的,而并非固定不变的。
以下以地理位置搜索引擎是十六层四叉树结构为例说明:
1.十六层四叉树:
a.分层方法:
整个世界地图是第一层,它是一个矩形也就是四叉树的第一个节点,把第一层进行田字型分割成四个矩形即四个节点作为第二层,再分别把每一块田字形分割成四块矩形作为第三层,以此类推分割到第十六层以后暂定不再分割。
b.分层条件:
分层条件是动态的变量N,视数据量由服务器配置设定而定,每一矩形内的数据量超过N,则保留原数据并向下一层分裂作数据冗余.可见在同一层上,不是每一个节点都会有子节点,也不是一定会有四个子节点.所以不一定是满四叉树。
c.节点编号:
编号原则:从左到右,自上而下编号1234(参照象限编号方法)
第一层节点编号:0(第一层只有一个节点所以编号比较特殊为0)
第二层编号:01,02,03,04
第三层编号:011,012,013,014,021,022,023,024,031,032,033,034
....
第十六层编号:0111111111111111,0111111111111112......
2.B树:
a.每一个四叉树节点上的数据有一个B树索引,单一索引或复合索引。
3.位置编号:
每一个位置(经度,纬度)都有一个按照四叉树的结构生成的编号。
例如:编号0231232421243212的点,它会在每一个节点0,02,023,0231,02312....上冗余,直到其中某一层节点以下的节点不存在。
4.给定矩形范围的查找:
给定一个矩形,四叉树区域节点算法会找出适合这个矩形的若干节点,这些节点的范围一定是覆盖原矩形的,
例如:矩形(9889143,1515299,11330935,2891555)的节点是
014234 014243 014312 014321 0142313 0142314 0142423 01424242
01424243 01424244 01431311 01431312 01431321 01431322 0143241101432412
01432421 014242413
5.四叉树区域节点算法:
总原则:找出能够覆盖该区域的最小范围所包含的所有节点。
其他原则:有些节点不存在,则找其父节点,有些节点所在层相对起始所在层太深(一般往下找5层),则用其父节点。
当然,在实际应用中,本领域技术人员根据具体的需要,还可采用将搜索对象的一种或两种以上的属性进行符合,形成一种索引,而将搜索对象的另一种或多种属性进行符合,形成另一种索引,而后以此两种或更多种索引再行复合,并按照等同于上述的构思,构建出合适的搜索引擎。
以上实施例仅用于说明本发明的内容,除此之外,本发明还有其他实施方式,但凡本领域技术人员因本发明所涉及之技术启示,而采用等同替换或等效变形方式形成的技术方案均落在本发明的保护范围内。