一种基于空间索引的搜索结果缓存方法和系统的制作方法

文档序号:6426242阅读:145来源:国知局
专利名称:一种基于空间索引的搜索结果缓存方法和系统的制作方法
技术领域
本发明涉及搜索技术,特别是指一种基于空间索引的搜索结果缓存方法和系统。
背景技术
在基于位置的服务(LBS, Location Based Service)应用中,在周边η公里范围内搜索特定关键字的地标是比较常见的功能。在实际应用中,用户使用LBS应用的请求量较大,因此,需要增加缓存来提高系统的响应速度。当用户首次搜索某个地标时,将搜索得到的结果(地标的位置信息)进行缓存,即缓存结果,根据用户搜索请求的用户坐标+关键字生成缓存关键字,以关联上述缓存结果;当用户再次搜索该地标时,根据用户坐标+关键字生成搜索关键字,则将搜索关键字与缓存关键字直接匹配就可直接得到搜索的结果,即得到缓存结果。但是,上述方案的问题在于缓存结果命中率较低,所谓缓存结果命中率是指根据 搜索关键字匹配到缓存结果的成功率。由于缓存关键字是根据用户坐标生成的,因此,用户再次搜索相同的地标时,只有在与上次相同坐标点上发出搜索请求,这样生成的搜索关键字才能匹配到缓存关键字,命中缓存结果,这必然导致缓存结果命中率低的问题。

发明内容
有鉴于此,本发明的主要目的在于提供一种基于空间索引的搜索结果缓存方法和系统,以解决现有LBS应用中缓存结果命中率低的问题。为达到上述目的,本发明的技术方案是这样实现的本发明提供了一种基于空间索引的搜索结果缓存方法,将平面区域划分为多个网格,该方法还包括将根据搜索请求进行搜索得到的搜索结果进行缓存,得到缓存结果;根据所述搜索请求中用户坐标生成对应的网格中心点坐标;根据所述网格中心点坐标和所述搜索请求中的关键字生成搜索关键字,并将所述搜索关键字作为缓存关键字与所述缓存结果关联。其中,所述网格为正方形。根据所述搜索请求中的用户坐标生成对应的网格中心点坐标,包括
X0= LX/1000J X网格边长+网格边长/2;
Y。= L Y/1000」X网格边长+网格边长/2;其中,所述X为用户坐标的横坐标,单位为m ;所述Y为用户坐标的纵坐标,单位为m ;所述网格边长单位为m ;所述X。为网格中心点坐标的横坐标,单位为m ;所述Y。为网格中心点坐标的纵坐标,单位为m。根据所述网格中心点坐标和所述搜索请求中的关键字生成搜索关键字,包括
根据所述网格中心点坐标生成网格标识(SpaceID)为
SpaceID= LXo/1000jx 网格系数 + L YQ/1000」;所述网格系数=100000/(网格边长/1000);其中,所述X。为网格中心点坐标的横坐标,单位为m ;所述Y。为网格中心点坐标的纵坐标,单位为m ;所述网格边长单位为m ;所述搜索关键字由所述SpaceID和所述关键字组成。将所述搜索关键字与所述缓存结果关联之后,该方法还包括根据搜索请求中的用户坐标和关键字生成搜索关键字;
将所述搜索关键字和所述缓存关键字进行匹配,匹配成功时,命中缓存结果成功;匹配失败时,命中缓存结果失败,返回缓存搜索结果。所述根据搜索请求中的用户坐标和关键字生成搜索关键字,包括根据所述用户坐标生成SpaceID
SpaceID= LX/1000J x 网格系数 + L Y/1000」;所述网格系数=100000/ (网格边长/1000)。本发明还提供了一种基于空间索引的搜索结果缓存系统,该系统包括网格划分单元,用于将平面区域划分为多个网格;搜索单元,用于将根据搜索请求进行搜索得到的搜索结果;缓存单元,用于将所述搜索结果进行缓存,得到缓存结果;还用于根据所述搜索请求中的用户坐标生成对应的网格中心点坐标;并根据所述网格中心点坐标和所述搜索请求中的关键字生成搜索关键字,将所述搜索关键字作为缓存关键字与所述缓存结果关联。所述网格为正方形。所述缓存单元,还用于根据所述搜索请求中的用户坐标生成对应的网格中心点坐标时,得到网格中心点坐标为
X0= LX/1000J X网格边长+网格边长/2;
Y。= L Y/1000」X网格边长+网格边长/2;其中,所述X为用户坐标的横坐标,单位为m ;所述Y为用户坐标的纵坐标,单位为m ;所述网格边长单位为m ;所述X。为网格中心点坐标的横坐标,单位为m ;所述Y。为网格中心点坐标的纵坐标,单位为m。所述缓存单元,还用于根据所述网格中心点坐标生成SpaceID SpaceID=LX</1000」x网格系数+LYQ/1000」;所述网格系数=100000/(网格边长/1000);所述缓存单元,还用于将所述SpaceID和所述关键字组成搜索关键字。本发明基于空间索引的搜索结果缓存方法和系统,根据搜索请求中的用户坐标生成对应的网格中心点坐标;并根据生成的网格中心点坐标和搜索请求中的关键字生成搜索关键字,将搜索关键字作为缓存关键字与缓存结果关联,如此,就能实现将某一距离范围内(例如一个网格)的搜索需求都定位到同一个坐标点(网格中心点坐标),那么,用户当前的坐标点只要是与网格中心点坐标在一个网格内,用户搜索相同的地标时,就可以命中缓存结果,从而提高缓存结果命中率。


图I为本发明基于空间索引的搜索结果缓存方法实施例一的流程图;图2为本发明基于空间索引的搜索结果缓存方法实施例二的流程图;图3为本发明基于空间索引的搜索结果缓存系统结构示意图。
具体实施例方式本发明基于空间索引的搜索结果缓存方法的关键在于将某一距离范围内的查询需求都定位到同一个坐标点,从而提高缓存命中率。
本发明利用地标索引中网格索引的思想来处理坐标,S卩将平面区域划分为网格,并对网格进行编号,用网格中心点坐标的查询结果代替网格内所有坐标的查询结果。如图I所示,本发明基于空间索引的搜索结果缓存方法,包括步骤101,将根据搜索请求进行搜索得到的搜索结果进行缓存,得到缓存结果。一般,首次搜索时,根据搜索请求到逻辑层进行搜索得到搜索结果,此处可以采用现有搜索技术,不再赘述。将搜索结果进行缓存,即为缓存结果。步骤102,根据搜索请求中用户坐标生成对应的网格中心点坐标。该步骤即是将某一距离范围内的搜索需求都定位到同一个坐标点,即网格中心点坐标。其中,本发明对平面区域划分得到的网格为正方形,网格边长可以根据实际需要设定,如果要求搜索的精度比较高,则可以选择较小的网格边长。具体的,生成网格中心点坐标,包括
XQ=LX/I000」x网格边长+网格边长/2;
YfLY/lOOOjx网格边长+网格边长/2;其中,X为搜索请求中用户坐标的横坐标,单位为m;Y为搜索请求中用户坐标的纵坐标,单位为m ;网格边长单位为m ;X。为网格中心点坐标的横坐标,单位为m ;Y。为网格中心点坐标的纵坐标,单位为m。步骤103,根据网格中心点坐标和搜索请求中的关键字生成搜索关键字。具体的,该步骤的实现包括首先,根据网格中心点坐标生成网格标识(SpaceID)SpaceID=Lxo/1000j χ 网格系数+[丫。/1000」;其中,网格系数=100000/(网格边长/1000);在本发明的LBS应用系统的数据库中,所有横坐标和纵坐标的值均小于99999km,因此,网格系数中的100000为坐标值的上限,单位为km。上述X。即为网格中心点坐标的横坐标,单位为m ;Y0即为网格中心点坐标的纵坐标,单位为m ;网格边长单位为m。搜索关键字由SpaceID和搜索请求中的关键字组成,根据需要可以任意设置搜索关键字的表示方式,例如可以采用如下的表示方式SpaCeID_关键字。步骤104,将搜索关键字作为缓存关键字与缓存结果关联。将搜索关键字作为缓存关键字与缓存结果关联起来,以备后续搜索使用。基于图I缓存方法的后续搜索流程如图2所示,包括步骤105,根据搜索请求中的用户坐标和关键字生成搜索关键字。首先,生成网格ID SpaceID=Lx/1000j χ网格系数+LY/1000」;网格系数=100000/(网格边长/1000);
其中,X为用户坐标的横坐标,单位为m 'Y为用户坐标的纵坐标,单位为m ;网格边长单位为m ;由SpaceID和关键字组成搜索关键字,该步骤的搜索关键字与步骤104的缓存关键字采用相同的表示方式。步骤106 107,将搜索关键字和缓存关键字进行匹配,匹配成功时,命中缓存结果,将缓存结果显示给用户;匹配失败时,命中缓存结果失败,返回步骤101,作为首次搜索处理。下面通过具体实施例来说明本发明技术方案的具体实现,本实施例包括以下流程I、将平面区域划分为网格,网格边长为1000m。2、用户首次对地标A进行搜索,发出搜索请求1,根据搜索请求I到逻辑层进行搜索得到搜索结果、即地标A的位置信息,进行缓存,得到缓存结果I。3、根据搜索请求I中的用户坐标(200m,400m)生成对应的网格中心点坐标为
Xo=L200/1000」X 1000+1000/2=500m;
Yo=L400/1000」X 1000+1000/2=500m;则用户坐标(200m,400m)对应的网格中心点坐标为(500m,500m)。4、根据网格中心点坐标生成SpaceID,具体的网格系数=100000/(1000/1000) = 100000 ;则SpaceID=L500/1000」x100000+L500/1000」=0;然后,由SpaceID(O)和关键字(A)生成搜索关键字I为0_A。5、将搜索关键字I (0_A)与缓存结果I进行关联。6、假设用户又一次发出了搜索请求2,搜索请求2中的用户坐标为(600m,800m),关键字为 A,则SpaceID=L600/1000」x 100000+L800/1000」=0;搜索关键字 2 为0A。7、可见,搜索关键字2与缓存关键字I完全匹配,则命中缓存结果1,可以直接将缓存结果I反馈给用户,无需到逻辑层进行搜索,提高了搜索效率。另外,通过上述的缓存过程和搜索过程可知,用户当前的坐标点只要是与网格中心点坐标(500m,500m)在同一个网格内,用户搜索地标A时,就可以命中缓存结果,从而提高命中率。8、假设用户又一次发出了搜索请求3,搜索请求3中的用户坐标为(1500m,800m),关键字为 B,则 SpaceID=Ll500/1000」x 100000+L800/1000」=1;搜索关键字 3 为100000_Β。9、可见,搜索关键字3与缓存关键字I不匹配,则命中失败,将搜索请求3以首次搜索对待,根据搜索请求3到逻辑层进行搜索得到搜索结果,即地标B的位置信息进行缓存,得到缓存结果3。10、经过计算,用户坐标(1500m,800m)对应的网格中心点坐标为(1500m,500m);SpaceID=Ll500/1000」x 100000+L500/1000」=100000;搜索关键字 3 为100000_B。11、将搜索关键字3(100000_8)与缓存结果3进行关联。 为了实现上述搜索结果缓存方法,本发明还提供了一种基于空间索引的搜索结果缓存系统,如图3所示,该系统包括网格划分单元,用于将平面区域划分为多个网格;搜索单元,用于将根据搜索请求进行搜索得到的搜索结果;缓存单元,用于将搜索结果进行缓存,得到缓存结果;还用于根据搜索请求中的用户坐标生成对应的网格中心点坐标;并根据网格中心点坐标和搜索请求中的关键字生成搜索关键字,将搜索关键字作为缓存关键字与缓存结果关联;其中,网格为正方形。
缓存单元,还用于根据搜索请求中的用户坐标生成对应的网格中心点坐标时,得到网格中心点坐标为
X0= LX/1000J X网格边长+网格边长/2;
Y。= L Y/1000」X网格边长+网格边长/2;其中,X为用户坐标的横坐标,单位为m 'Y为用户坐标的纵坐标,单位为m ;网格边长单位为m ;X。为网格中心点坐标的横坐标,单位为m ;Y。为网格中心点坐标的纵坐标,单位
为 IIlo缓存单元,还用于根据网格中心点坐标生成SpaceID =SpaceID= LX0/1000JX网格系数+Lyq/1000」;网格系数=100000/(网格边长/1000);其中,X。为网格中心点坐标的横坐标,单位为m ;Y。为网格中心点坐标的纵坐标,单位为m ;网格边长单位为m。缓存单元,还用于将SpaceID和关键字组成搜索关键字。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.一种基于空间索引的搜索结果缓存方法,其特征在于,将平面区域划分为多个网格,该方法还包括 将根据搜索请求进行搜索得到的搜索结果进行缓存,得到缓存结果; 根据所述搜索请求中用户坐标生成对应的网格中心点坐标; 根据所述网格中心点坐标和所述搜索请求中的关键字生成搜索关键字,并将所述搜索关键字作为缓存关键字与所述缓存结果关联。
2.根据权利要求I所述基于空间索引的搜索结果缓存方法,其特征在于,所述网格为正方形。
3.根据权利要求2所述基于空间索引的搜索结果缓存方法,其特征在于,根据所述搜索请求中的用户坐标生成对应的网格中心点坐标,包括X0= LX/1000J X网格边长+网格边长/2;Y。= L Y/1000」X网格边长+网格边长/2; 其中,所述X为用户坐标的横坐标,单位为m ;所述Y为用户坐标的纵坐标,单位为m ;所述网格边长单位为m ;所述X。为网格中心点坐标的横坐标,单位为m ;所述Y。为网格中心点坐标的纵坐标,单位为m。
4.根据权利要求3所述基于空间索引的搜索结果缓存方法,其特征在于,根据所述网格中心点坐标和所述搜索请求中的关键字生成搜索关键字,包括 根据所述网格中心点坐标生成网格标识(SpaceID)为SpaceID= LXo/1000jx 网格系数 + L YQ/1000」; 所述网格系数=100000/(网格边长/1000); 其中,所述X。为网格中心点坐标的横坐标,单位为m;所述Y。为网格中心点坐标的纵坐标,单位为m ;所述网格边长单位为m ;所述搜索关键字由所述SpaceID和所述关键字组成。
5.根据权利要求4所述基于空间索引的搜索结果缓存方法,其特征在于,将所述搜索关键字与所述缓存结果关联之后,该方法还包括 根据搜索请求中的用户坐标和关键字生成搜索关键字; 将所述搜索关键字和所述缓存关键字进行匹配,匹配成功时,命中缓存结果成功;匹配失败时,命中缓存结果失败,返回缓存搜索结果。
6.根据权利要求5所述基于空间索引的搜索结果缓存方法,其特征在于,所述根据搜索请求中的用户坐标和关键字生成搜索关键字,包括 根据所述用户坐标生成SpaceID SpaceID= LX/1000J x 网格系数 + L Y/1000」; 所述网格系数=100000/(网格边长/1000)。
7.一种基于空间索引的搜索结果缓存系统,其特征在于,该系统包括 网格划分单元,用于将平面区域划分为多个网格; 搜索单元,用于将根据搜索请求进行搜索得到的搜索结果; 缓存单元,用于将所述搜索结果进行缓存,得到缓存结果;还用于根据所述搜索请求中的用户坐标生成对应的网格中心点坐标;并根据所述网格中心点坐标和所述搜索请求中的关键字生成搜索关键字,将所述搜索关键字作为缓存关键字与所述缓存结果关联。
8.根据权利要求7所述基于空间索引的搜索结果缓存系统,其特征在于,所述网格为正方形。
9.根据权利要求8所述基于空间索引的搜索结果缓存系统,其特征在于, 所述缓存单元,还用于根据所述搜索请求中的用户坐标生成对应的网格中心点坐标时,得到网格中心点坐标为X0= LX/1000J X网格边长+网格边长/2;Y。= L Y/1000」X网格边长+网格边长/2; 其中,所述X为用户坐标的横坐标,单位为m ;所述Y为用户坐标的纵坐标,单位为m ;所述网格边长单位为m ;所述X。为网格中心点坐标的横坐标,单位为m ;所述Y。为网格中心点坐标的纵坐标,单位为m。
10.根据权利要求9所述基于空间索引的搜索结果缓存系统,其特征在于, 所述缓存单元,还用于根据所述网格中心点坐标生成SpaceID SpaceID=LX</1000」x网格系数+LYQ/1000」;所述网格系数=100000/(网格边长 /1000); 所述缓存单元,还用于将所述SpaceID和所述关键字组成搜索关键字。
全文摘要
本发明公开了一种基于空间索引的搜索结果缓存方法,将平面区域划分为多个网格,还包括将根据搜索请求进行搜索得到的搜索结果进行缓存,得到缓存结果;根据搜索请求中的用户坐标生成对应的网格中心点坐标;根据网格中心点坐标和搜索请求中的关键字生成搜索关键字;将搜索关键字作为缓存关键字与缓存结果关联。本发明还公开了一种基于空间索引的搜索结果缓存系统,通过本发明能够提高缓存结果命中率。
文档编号G06F17/30GK102831112SQ20111015913
公开日2012年12月19日 申请日期2011年6月14日 优先权日2011年6月14日
发明者刘元芳, 周晓波 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1