一种基于空间索引的搜索结果缓存方法和系统技术方案

技术编号:8105703 阅读:180 留言:0更新日期:2012-12-21 04:25
本发明专利技术公开了一种基于空间索引的搜索结果缓存方法,将平面区域划分为多个网格,还包括:将根据搜索请求进行搜索得到的搜索结果进行缓存,得到缓存结果;根据搜索请求中的用户坐标生成对应的网格中心点坐标;根据网格中心点坐标和搜索请求中的关键字生成搜索关键字;将搜索关键字作为缓存关键字与缓存结果关联。本发明专利技术还公开了一种基于空间索引的搜索结果缓存系统,通过本发明专利技术能够提高缓存结果命中率。

【技术实现步骤摘要】

本专利技术涉及搜索技术,特别是指一种基于空间索引的搜索结果缓存方法和系统
技术介绍
在基于位置的服务(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和搜索请求中的关键字组成,根据需要可以任意设置搜索关键字的表本文档来自技高网...

【技术保护点】
一种基于空间索引的搜索结果缓存方法,其特征在于,将平面区域划分为多个网格,该方法还包括:将根据搜索请求进行搜索得到的搜索结果进行缓存,得到缓存结果;根据所述搜索请求中用户坐标生成对应的网格中心点坐标;根据所述网格中心点坐标和所述搜索请求中的关键字生成搜索关键字,并将所述搜索关键字作为缓存关键字与所述缓存结果关联。

【技术特征摘要】

【专利技术属性】
技术研发人员:刘元芳周晓波
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

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

1