CN105005567A - 兴趣点查询方法和*** - Google Patents
兴趣点查询方法和*** Download PDFInfo
- Publication number
- CN105005567A CN105005567A CN201410161417.6A CN201410161417A CN105005567A CN 105005567 A CN105005567 A CN 105005567A CN 201410161417 A CN201410161417 A CN 201410161417A CN 105005567 A CN105005567 A CN 105005567A
- Authority
- CN
- China
- Prior art keywords
- point
- interest
- mark
- checked
- location
- 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.)
- Granted
Links
Landscapes
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种兴趣点查询方法,所述方法包括:接收兴趣点查询请求;根据所述兴趣点查询请求确定待查询位置点;根据预先缓存的位置点和兴趣点标识的对应关系,以所述待查询位置点为索引查询兴趣点标识;当查询到所述待查询位置点所对应的兴趣点标识后,根据预先缓存的兴趣点标识和兴趣点的对应关系,以所述查询到的兴趣点标识为索引,查询获得所述查询到的兴趣点标识所对应的兴趣点。本发明提供的兴趣点查询方法,由于查询的是事先缓存的信息,因此可以尽量避免通过电子地图的兴趣点查询接口进行查询而导致的效率低下。而且通过先查询兴趣点标识再查询兴趣点,可以极大地提高查询兴趣点的效率。本发明还提供了一种兴趣点查询***。
Description
技术领域
本发明涉及信息处理技术领域,特别是涉及一种兴趣点查询方法和***。
背景技术
兴趣点(Point of Interest,缩写为POI,亦可称作信息点)是导航技术中使用的一种数据对象,包括名称、地址、类别、经纬度等信息,表示电子地图中某处的位置、名称等属性信息。比如,例如:XX大厦、广东省深圳市XX区XX路、商务楼宇、(22.543445,113.945707)。随着智能终端的广泛使用,用户兴趣点的收集变得越来越方便,根据这些兴趣点可以分析出用户的兴趣、行为以及与其他用户的关系等,进而可根据分析出的这些信息向用户推送对用户有用的、与用户关联度高的信息,使得信息的推送更加智能化。
传统技术中查询兴趣点,是通过电子地图提供的兴趣点查询API(Application Programming Interface,应用程序接口)(以下简称兴趣点查询接口)实现的,向其输入GPS(Global Positioning System,全球定位***)点,从而返回兴趣点。
然而,由于电子地图POI查询涉及复杂的计算,电子地图兴趣点查询接口提供的能力有限,导致查询兴趣点效率低下,不能满足日益增长的用户需求。例如目前一种电子地图提供的POI查询接口,使用一台8核的机器最大能力只能提供5000/秒的GPS点到POI的转换能力,而这只是向外提供服务的计算机器,其后还需要庞大的存储机群的支持。要想向用户提供更高频率的查询能力,例如5万/秒的能力,就需要10台计算机器,以及更多的存储机群,需要巨大的机器和人力资源投入。
发明内容
基于此,有必要针对传统技术中查询兴趣点效率低下的问题,提供一种兴趣点查询方法和***。
一种兴趣点查询方法,所述方法包括:
接收兴趣点查询请求;
根据所述兴趣点查询请求确定待查询位置点;
根据预先缓存的位置点和兴趣点标识的对应关系,以所述待查询位置点为索引查询兴趣点标识;
当查询到所述待查询位置点所对应的兴趣点标识后,根据预先缓存的兴趣点标识和兴趣点的对应关系,以所述查询到的兴趣点标识为索引,查询获得所述查询到的兴趣点标识所对应的兴趣点。
一种兴趣点查询***,所述***包括:
请求接收模块,用于接收兴趣点查询请求;
待查询位置点确定模块,用于根据所述兴趣点查询请求确定待查询位置点;
兴趣点标识缓存查询模块,用于根据预先缓存的位置点和兴趣点标识的对应关系,以所述待查询位置点为索引查询兴趣点标识;
兴趣点缓存查询模块,用于当查询到所述待查询位置点所对应的兴趣点标识后,根据预先缓存的兴趣点标识和兴趣点的对应关系,以所述查询到的兴趣点标识为索引,查询获得所述查询到的兴趣点标识所对应的兴趣点。
上述兴趣点查询方法和***,预先缓存了位置点和兴趣点标识的对应关系,以及兴趣点标识和兴趣点的对应关系。通过这样的两级缓存,在接收到兴趣点查询请求并确定待查询位置点后,先以待查询位置点为索引从一级缓存中查询兴趣点标识,再以查询到的兴趣点标识为索引从另一级缓存中查询获得兴趣点。
这样由于查询的是事先缓存的信息,因此可以尽量避免通过电子地图的兴趣点查询接口进行查询而导致的效率低下。而且由于兴趣点所占存储空间比兴趣点标识所占存储空间大很多,待查询位置点的总数量又与兴趣点的总数量相差很大,因此通过先查询兴趣点标识再查询兴趣点,可以极大地提高查询兴趣点的效率。
附图说明
图1为一个实施例中兴趣点查询方法的流程示意图;
图2为另一个实施例中兴趣点查询方法的流程示意图;
图3为一个实施例中第一多阶哈希表的简化示意图;
图4为一个实施例中经过序列化处理的兴趣点的示意图;
图5为一个实施例中兴趣点查询***的结构框图;
图6为另一个实施例中兴趣点查询***的结构框图;
图7为再一个实施例中兴趣点查询***的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,在一个实施例中,提供了一种兴趣点查询方法,本实施例以该方法应用于查询处理端来举例说明。该兴趣点查询方法具体包括如下步骤:
步骤102,接收兴趣点查询请求。
在一个实施例中,客户端向查询处理端发送兴趣点查询请求,从而查询处理端接收客户端发送的兴趣点查询请求。在一个实施例中,查询处理端上运行的基于LBS(Location Based Services,基于位置服务)的应用发出兴趣点查询请求,查询处理端接收查询处理端上运行的基于LBS的应用发出的兴趣点查询请求。在一个实施例中,第三方的终端或平台服务器向查询处理端发送兴趣点查询请求,从而查询处理端接收来自第三方的终端或平台服务器的兴趣点查询请求;这里的第三方指不同于客户端和查询处理端的一方。
步骤104,根据兴趣点查询请求确定待查询位置点。
待查询位置点是需要查询的位置点,其中任意的位置点可用经度和维度表示。
在一个实施例中,兴趣点查询请求中包括待查询位置点,则步骤104为获取兴趣点查询请求中的待查询位置点。此时查询处理端直接根据兴趣点查询请求,查询该该请求中的待查询位置点所对应的兴趣点,适用于根据用户选择的位置点来查询相应的兴趣点的场景。
步骤106,根据预先缓存的位置点和兴趣点标识的对应关系,以待查询位置点为索引查询兴趣点标识。
具体地,可预先在内存中缓存以位置点为索引的位置点和兴趣点标识的对应关系,从而可以在查询兴趣点时,以待查询位置点为索引快速地查询与该待查询位置点对应的兴趣点标识。其中兴趣点标识用于唯一标识出兴趣点,兴趣点标识可以包括数字、字母、符号和文字中的至少一种。兴趣点标识可以是指向兴趣点存储地址的指针。
步骤108,当查询到待查询位置点所对应的兴趣点标识后,根据预先缓存的兴趣点标识和兴趣点的对应关系,以查询到的兴趣点标识为索引,查询获得上述查询到的兴趣点标识所对应的兴趣点。
具体地,可预先在内存中缓存以兴趣点标识为索引的兴趣点标识和兴趣点的对应关系,从而在查询到待查询位置点所对应的兴趣点标识后,以查询到的兴趣点标识为索引查询与查询到的兴趣点标识对应的兴趣点。
上述兴趣点查询方法,预先缓存了位置点和兴趣点标识的对应关系,以及兴趣点标识和兴趣点的对应关系。通过这样的两级缓存,在接收到兴趣点查询请求并确定待查询位置点后,先以待查询位置点为索引从一级缓存中查询兴趣点标识,再以查询到的兴趣点标识为索引从另一级缓存中查询获得兴趣点。这样由于查询的是事先缓存的信息,因此可以尽量避免通过电子地图的兴趣点查询接口进行查询而导致的效率低下。
而且兴趣点所占存储空间与兴趣点标识所占存储空间差别很大,通常兴趣点包括较长的字符串,平均需要256个字节来存储;而兴趣点标识可以用一个8字节的整数就可以表示。而兴趣点总量是有限的,目前市面上的某电子地图的兴趣点数据库中兴趣点总量不到5000万个。且位置点与兴趣点通常是多对一的关系,比如某大学中的任意一个位置点都可以与表示该大学的一个兴趣点对应,因此多个位置点可对应同一兴趣点。假设一个用户标识对应10个兴趣点,若用户总数为8亿,那么需要查询的兴趣点就有80亿个之多,其中有些兴趣点是重复的。因此若直接缓存位置点和兴趣点的对应关系,所需的存储空间非常之多,硬件成本太高,不利于基于兴趣点的技术的普及。
而通过设置缓存位置点和兴趣点标识的对应关系,以及缓存兴趣点标识和兴趣点的对应关系这样的二级缓存,缓存位置点与兴趣点标识的对应关系所需存储空间很少,兴趣点标识与兴趣点的对应关系最多不到5000万条,可以在使用较少的存储空间的前提下实现很高的查询效率。
如图2所示,在另一个实施例中,提供了一种兴趣点查询方法,本实施例以该方法应用于查询处理端来举例说明。该方法包括以下步骤:
步骤202,接收兴趣点查询请求,兴趣点查询请求包括用户标识。
查询处理端可以接收客户端发送的兴趣点查询请求,或者可以接收查询处理端上运行的基于LBS的应用发出的兴趣点查询请求,或者还可以接收来自第三方的终端或平台服务器的兴趣点查询请求。兴趣点查询请求中包括用户标识,该用户标识用以唯一标识用户身份,比如可以是账号。用户标识可以包括但不限于数字、字母、符号和文字中的至少一种。
步骤204,根据兴趣点查询请求,获取用户标识所对应的待查询位置点的集合。
具体地,用户在使用基于LBS的客户端时,客户端可定时或不定时地向LBS服务器上报LBS信息,该LBS信息包括用户标识和位置点。LBS服务器通过对客户端上报的LBS信息进行聚类分析,获得该用户标识对应的用户经常出没的几个位置点,比如居住地、公司所在地、餐厅或商场等,并存储该用户标识和分析获得的位置点的对应关系。其中LBS服务器可以是查询处理端。进一步地,查询处理端在接收到兴趣点查询请求后,通过查询LBS服务器或从本地获取兴趣点查询请求中的用户标识所对应的待查询位置点,从而继续执行后续步骤以查询获得该待查询位置点的集合所对应的兴趣点的集合。
通过事先预设用户标识与用户经常出没的若干位置点,从而通过查询这些位置点所对应的兴趣点,获得待查询兴趣点的集合,有利于根据查询获得的兴趣点向用户提供有价值的信息。比如利用查询获得的兴趣点集合,可以分析出相应的用户的个人兴趣、行为以及与其它用户之间的社会关系,可以发掘出旅游美食专家和社区团体,可以进行个性化的饮食、购物、旅游推荐等等。
步骤206,根据预先缓存的位置点和兴趣点标识的对应关系,以待查询位置点为索引查询兴趣点标识。
具体地,可预先在内存中缓存位置点和兴趣点标识的对应关系,从而可以在查询时以待查询位置点为索引快速地查询与该待查询位置点对应的兴趣点标识。其中兴趣点标识用于唯一标识出兴趣点,兴趣点标识可以包括数字、字母、符号和文字中的至少一种。
在一个实施例中,查询处理端可通过第一多阶哈希表来缓存位置点和兴趣点标识的对应关系。
具体地,可将待缓存的位置点作为关键字代入第一哈希函数以计算获得第一哈希地址,比如将该位置点的经度和维度拼接后代入第一哈希函数获得第一哈希地址。其中第一哈希函数可以是线形函数、多次函数、随机函数、取余函数等等。
然后尝试将该待缓存位置点和其所对应的兴趣点标识存储到第一多阶哈希表的第一阶哈希表中的第一哈希地址中。当在第一多阶哈希表的当前一阶哈希表中的第一哈希地址处发生冲突时,则尝试向与该阶哈希表相邻的下一阶哈希表中缓存该待缓存位置点和其所对应的兴趣点标识;并记录该阶哈希表中第一哈希地址与下一阶哈希表中的第一哈希地址的映射关系,直至缓存该待缓存位置点及其对应的兴趣点标识成功;或者直至当第一多阶哈希表的所有阶哈希表均发生冲突时,则可采用其它辅助方式缓存,比如可直接在内存中缓存该待缓存位置点及其所对应的兴趣点标识。
其中第一多阶哈希表的阶数一般小于或等于50阶,优选为16~32阶。且每阶哈希表中哈希地址的个数(即可对应存储位置点和兴趣点标识的个数)为素数,且各阶哈希表中哈希地址的个数按阶数递减。举例说明,如图3所示,图3中为第一多阶哈希表,共有n阶,第1阶到第n阶哈希表中哈希地址的个数依次为N1、N2、……、Nn,其中N1、N2、……、Nn都是素数,且N1到Nn数值逐个递减。由于第一多阶哈希表中发生冲突的频次是按第一多阶哈希表的阶数递减的,因此各阶哈希表的哈希地址的个数按阶数递减,可以节省存储空间。
当采用第一多阶哈希表缓存位置点和兴趣点标识的对应关系时,步骤206具体包括:将待查询位置点作为关键字代入第一哈希函数获得相应的第二哈希地址,根据该第二哈希地址获取第一多阶哈希表中的第一阶哈希表中的第二哈希地址中存储的位置点和兴趣点标识。然后判断该获取的位置点是否与待查询位置点一致,若一致则当前获取的兴趣点标识即为待查询位置点所对应的兴趣点标识。若不一致则说明该第二哈希地址存在冲突,则继续从该冲突的第二哈希地址所映射的下一阶哈希表中的哈希地址中获取位置点和兴趣点标识,直至获取的位置点与待查询位置点一致,以查询获得待查询位置点所对应的兴趣点标识。
本实施例中,采用第一多阶哈希表来缓存位置点和兴趣点标识的对应关系,通过非常少的计算步骤便可以从第一多阶哈希表中查询获得待查询位置点所对应的兴趣点标识,提高了查询效率。
步骤208,判断是否查询到待查询位置点所对应的兴趣点标识,若是则执行步骤210,若否则执行步骤216。
内存中可以仅缓存部分的位置点和兴趣点标识的对应关系。比如仅缓存其使用率超过给定阈值的位置点和兴趣点标识的对应关系,以节省内存资源。又比如当电子地图的兴趣点数据库发生更新时,内存中缓存的位置点和兴趣点标识的对应关系还未更新。因此会发生在内存中查询不到待查询位置点所对应的兴趣点标识的情况,从而再根据是否查询到待查询位置点所对应的兴趣点标识的判断结果来执行不同的步骤。
步骤210,根据预先缓存的兴趣点标识和兴趣点的对应关系,以查询到的兴趣点标识为索引,查询上述查询到的兴趣点标识所对应的兴趣点。
具体地,可预先在内存中缓存以兴趣点标识为索引的兴趣点标识和兴趣点的对应关系,从而在查询到待查询位置点所对应的兴趣点标识后,以查询到的兴趣点标识为索引查询与查询到的兴趣点标识对应的兴趣点。
在一个实施例中,查询处理端可通过第二多阶哈希表来缓存兴趣点标识和兴趣点的对应关系。
具体地,可将待缓存的兴趣点标识作为关键字代入第二哈希函数以计算获得第三哈希地址,比如将该兴趣点标识的经度和维度拼接后代入第二哈希函数获得第三哈希地址。其中第二哈希函数可以是线形函数、多次函数、随机函数、取余函数等等。
然后尝试将该待缓存兴趣点标识和其所对应的兴趣点存储到第二多阶哈希表的第一阶哈希表中的第三哈希地址中。当在第二多阶哈希表的当前一阶哈希表中的第三哈希地址处发生冲突时,则尝试向与该阶哈希表相邻的下一阶哈希表中缓存该待缓存兴趣点标识和其所对应的兴趣点;并记录该阶哈希表中第三哈希地址与下一阶哈希表中的第三哈希地址的映射关系,直至缓存该待缓存兴趣点标识及其对应的兴趣点成功;或者直至当第二多阶哈希表的所有阶哈希表均发生冲突时,则可采用其它辅助方式缓存,比如可直接在内存中缓存该待缓存兴趣点标识及其所对应的兴趣点。
其中第二多阶哈希表的阶数一般小于或等于50阶,优选为16~32阶。且每阶哈希表中哈希地址的个数为素数,且各阶哈希表中哈希地址的个数按阶数递减。由于第二多阶哈希表中发生冲突的频次是按第二多阶哈希表的阶数递减的,因此各阶哈希表的哈希地址的个数按阶数递减,可以节省存储空间。
当采用第二多阶哈希表缓存兴趣点标识和兴趣点的对应关系时,步骤206具体包括:将查询到的兴趣点标识作为关键字代入第二哈希函数获得相应的第四哈希地址,根据该第四哈希地址获取第二多阶哈希表中的第一阶哈希表中的第四哈希地址中存储的兴趣点标识和兴趣点。然后判断该获取的兴趣点标识是否与查询到的兴趣点标识一致,若一致则当前获取的兴趣点即为查询到的兴趣点标识所对应的兴趣点。若不一致则说明该第四哈希地址存在冲突,则继续从该冲突的第四哈希地址所映射的下一阶哈希表中的哈希地址中获取兴趣点标识和兴趣点,直至获取的兴趣点标识与查询到的兴趣点标识一致,以查询获得上述查询到的兴趣点标识所对应的兴趣点。这里查询到的兴趣点标识为上述以待查询位置点为索引而查询到的兴趣点标识。
本实施例中,采用第二多阶哈希表来缓存兴趣点标识和兴趣点的对应关系,通过非常少的计算步骤便可以从第二多阶哈希表中查询获得上述查询到的兴趣点标识所对应的兴趣点,提高了查询效率。
步骤212,判断是否查询到上述查询到的兴趣点标识所对应的兴趣点,若是则执行步骤214,若否则执行步骤216。
内存中可以仅缓存部分的兴趣点标识和兴趣点的对应关系。比如仅缓存使用率超过给定阈值的兴趣点标识和兴趣点的对应关系,以节省内存资源。又比如当电子地图的兴趣点数据库发生更新时,内存中缓存的兴趣点标识和兴趣点的对应关系还未更新。因此会发生在内存中查询不到上述查询到的兴趣点标识所对应的兴趣点的情况,从而再根据是否查询到上述查询到的兴趣点标识所对应的兴趣点的判断结果来执行不同的步骤。
步骤214,通过电子地图提供的兴趣点查询接口以查询获得待查询位置点所对应的兴趣点;该通过兴趣点查询接口查询获得的兴趣点包括兴趣点标识属性。
上述缓存的位置点和兴趣点标识的对应关系,以及兴趣点标识和兴趣点的对应关系,均可来自电子提供的兴趣点查询接口,可通过该兴趣点查询接口获取位置点和兴趣点标识的对应关系以及兴趣点标识和兴趣点的对应关系后缓存到内存中。通过兴趣点查询接口查询获得的兴趣点包括兴趣点标识属性,该属性用以表示该查询获得的兴趣点所对应的兴趣点标识。
步骤216,根据待查询位置点和兴趣点标识属性,更新缓存的位置点和兴趣点标识的对应关系;根据兴趣点标识属性和通过兴趣点查询接口查询获得的兴趣点,更新缓存的兴趣点标识和兴趣点的对应关系。
具体地,查询处理端可调用兴趣点标识缓存更新接口,将待查询位置点和兴趣点标识属性对应添加到内存中,以更新缓存的位置点和兴趣点标识的对应关系;当更新成功时返回更新成功的标识,当更新失败时返回更新失败的标识。
查询处理端可调用兴趣点缓存更新接口,将兴趣点标识属性和通过兴趣点查询获得的兴趣点对应添加到内存中,以更新缓存的兴趣点标识和兴趣点的对应关系;当更新成功时返回更新成功的标识,当更新失败时返回更新失败的标识。
步骤218,返回兴趣点查询结果。
当查询到兴趣点后,查询处理端返回包括查询到的兴趣点的查询结果。当未查询到兴趣点时,查询处理端返回表示查询失败的查询结果。当查询到兴趣点后,查询处理端可向发出兴趣点查询请求的客户端发送与查询到的兴趣点相关的预设信息。
上述兴趣点查询方法,当从缓存中无法查询到兴趣点时,则通过电子地图提供的兴趣点查询接口以查询获得待查询位置点所对应的兴趣点,提供了兴趣点查询的辅助手段,避免因缓存内容的原因导致无法查询到兴趣点。而且当通过兴趣点查询接口查询获得兴趣点后,再根据查询获得的兴趣点更新缓存,以备下一次查询兴趣点时能够高效地查询到兴趣点。
在一个实施例中,缓存的兴趣点经过序列化处理。
兴趣点是一种结构体数据,包括若干属性以及相应的属性值。比如一个兴趣点可以包括名称、地址、类别、经纬度等属性,对应这些属性的属性值可以是XX大厦、广东省深圳市XX区XX路、商务楼宇、(22.543445,113.945707)等。而结构体数据占用存储空间依然很多,因此需要对兴趣点进行序列化处理转化成字符串,以对其进行压缩,然后再进行缓存。当查询到兴趣点后,可对兴趣点进行反序列化处理,以获得结构体数据形式的兴趣点。
参考图4,对兴趣点进行序列化处理后,包括若干域(Field),每个域可与兴趣点的一个属性对应。每个域包括标签(Tag)和域值(Value),其中标签可以用来区分不同的域,而域值则与兴趣点的属性值对应。而且域值可以根据域值本身值的大小采用变长编码,以进一步减小缓存兴趣点时所占内存的存储空间,以降低硬件成本。
如图5所示,在一个实施例中,提供了一种兴趣点查询***,该兴趣点查询***包括:请求接收模块502、待查询位置点确定模块504、兴趣点标识缓存查询模块506和兴趣点缓存查询模块508。
请求接收模块502,用于接收兴趣点查询请求。
请求接收模块502可用于接收客户端发送的兴趣点查询请求,或者可以用于接收本地运行的基于LBS的应用发出的兴趣点查询请求,或者还可以用于接收来自第三方的终端或平台服务器的兴趣点查询请求。兴趣点查询请求中可以包括用户标识,该用户标识用以唯一标识用户身份,比如可以是账号。用户标识可以包括但不限于数字、字母、符号和文字中的至少一种。
待查询位置点确定模块504,用于根据兴趣点查询请求确定待查询位置点。
任意的位置点可用经度和维度表示。兴趣点查询请求中包括待查询位置点,则待查询位置点确定模块504用于获取兴趣点查询请求中的待查询位置点。
兴趣点标识缓存查询模块506,用于根据预先缓存的位置点和兴趣点标识的对应关系,以待查询位置点为索引查询兴趣点标识。
兴趣点标识缓存查询模块506可用于预先在内存中缓存以位置点为索引的位置点和兴趣点标识的对应关系,从而可以用于在查询兴趣点时,以待查询位置点为索引快速地查询与该待查询位置点对应的兴趣点标识。其中兴趣点标识用于唯一标识出兴趣点,兴趣点标识可以包括数字、字母、符号和文字中的至少一种。兴趣点标识可以是指向兴趣点存储地址的指针。
兴趣点缓存查询模块508,用于当查询到待查询位置点所对应的兴趣点标识后,根据预先缓存的兴趣点标识和兴趣点的对应关系,以查询到的兴趣点标识为索引,查询获得上述查询到的兴趣点标识所对应的兴趣点。
兴趣点缓存查询模块508可用于预先在内存中缓存以兴趣点标识为索引的兴趣点标识和兴趣点的对应关系,从而用于在查询到待查询位置点所对应的兴趣点标识后,以查询到的兴趣点标识为索引查询与查询到的兴趣点标识对应的兴趣点。
上述兴趣点查询***,预先缓存了位置点和兴趣点标识的对应关系,以及兴趣点标识和兴趣点的对应关系。通过这样的两级缓存,在接收到兴趣点查询请求并确定待查询位置点后,先以待查询位置点为索引从一级缓存中查询兴趣点标识,再以查询到的兴趣点标识为索引从另一级缓存中查询获得兴趣点。
这样由于查询的是事先缓存的信息,因此可以尽量避免通过电子地图的兴趣点查询接口进行查询而导致的效率低下。而且由于兴趣点所占存储空间比兴趣点标识所占存储空间大很多,待查询位置点的总数量又与兴趣点的总数量相差很大,因此通过先查询兴趣点标识再查询兴趣点,可以极大地提高查询兴趣点的效率。
在一个实施例中,兴趣点查询请求包括用户标识;待查询位置点确定模块504还用于根据兴趣点查询请求,获取用户标识所对应的待查询位置点的集合。
具体地,用户在使用基于LBS的客户端时,客户端可用于定时或不定时地上报LBS信息,该LBS信息包括用户标识和位置点。该兴趣点查询***可用于通过对客户端上报的LBS信息进行聚类分析,获得该用户标识对应的用户经常出没的几个位置点,并存储该用户标识和分析获得的位置点的对应关系。进一步地,待查询位置点确定模块504用于在接收到兴趣点查询请求后,用于通过查询以获取兴趣点查询请求中的用户标识所对应的待查询位置点。这样有利于根据查询获得的兴趣点向用户提供有价值的信息。
如图6所示,在一个实施例中,该兴趣点查询***还包括:辅助兴趣点查询模块505,用于当以待查询位置点为索引未查询到兴趣点标识,或者以查询到的兴趣点标识为索引未查询到兴趣点时,则通过电子地图提供的兴趣点查询接口以查询获得待查询位置点所对应的兴趣点。
上述缓存的位置点和兴趣点标识的对应关系,以及兴趣点标识和兴趣点的对应关系,均可来自电子提供的兴趣点查询接口。辅助兴趣点查询模块505用于当从缓存中无法查询到兴趣点时,通过兴趣点查询接口查询获得的兴趣点包括兴趣点标识属性,该属性用以表示该查询获得的兴趣点所对应的兴趣点标识。这样提供了兴趣点查询的辅助手段,避免因缓存内容的原因导致无法查询到兴趣点。
如图7所示,在一个实施例中,上述通过兴趣点查询接口查询获得的兴趣点包括兴趣点标识属性;该兴趣点查询***还包括:兴趣点标识缓存更新模块507和兴趣点缓存更新模块509。
兴趣点标识缓存更新模块507,用于根据待查询位置点和兴趣点标识属性,更新缓存的位置点和兴趣点标识的对应关系。
具体地,兴趣点标识缓存更新模块507可用于调用兴趣点标识缓存更新接口,将待查询位置点和兴趣点标识属性对应添加到内存中,以更新缓存的位置点和兴趣点标识的对应关系;当更新成功时返回更新成功的标识,当更新失败时返回更新失败的标识。
兴趣点缓存更新模块509,用于根据兴趣点标识属性和通过兴趣点查询接口查询获得的兴趣点,更新缓存的兴趣点标识和兴趣点的对应关系。
兴趣点缓存更新模块509可用于调用兴趣点缓存更新接口,将兴趣点标识属性和通过兴趣点查询获得的兴趣点对应添加到内存中,以更新缓存的兴趣点标识和兴趣点的对应关系;当更新成功时返回更新成功的标识,当更新失败时返回更新失败的标识。
本实施例中,当通过兴趣点查询接口查询获得兴趣点后,再根据查询获得的兴趣点更新缓存,可以保证下一次查询兴趣点时能够高效地查询到兴趣点。
在一个实施例中,缓存的兴趣点经过序列化处理。
兴趣点是一种结构体数据,包括若干属性以及相应的属性值。而结构体数据占用存储空间依然很多,因此需要对兴趣点进行序列化处理转化成字符串,以对其进行压缩,然后再进行缓存。当查询到兴趣点后,可对兴趣点进行反序列化处理,以获得结构体数据形式的兴趣点。
对兴趣点进行序列化处理后,包括若干域,每个域可与兴趣点的一个属性对应。每个域包括标签和域值,其中标签可以用来区分不同的域,而域值则与兴趣点的属性值对应。而且域值可以根据域值本身值的大小采用变长编码,以进一步减小缓存兴趣点时所占内存的存储空间,以降低硬件成本。
在一个实施例中,兴趣点标识缓存查询模块506可用于通过第一多阶哈希表来缓存位置点和兴趣点标识的对应关系。
具体地,兴趣点标识缓存查询模块506可用于将待缓存的位置点作为关键字代入第一哈希函数以计算获得第一哈希地址,比如将该位置点的经度和维度拼接后代入第一哈希函数获得第一哈希地址。其中第一哈希函数可以是线形函数、多次函数、随机函数、取余函数等等。
然后兴趣点标识缓存查询模块506可用于尝试将该待缓存位置点和其所对应的兴趣点标识存储到第一多阶哈希表的第一阶哈希表中的第一哈希地址中。当在第一多阶哈希表的当前一阶哈希表中的第一哈希地址处发生冲突时,则兴趣点标识缓存查询模块506用于尝试向与该阶哈希表相邻的下一阶哈希表中缓存该待缓存位置点和其所对应的兴趣点标识;并用于记录该阶哈希表中第一哈希地址与下一阶哈希表中的第一哈希地址的映射关系,直至缓存该待缓存位置点及其对应的兴趣点标识成功;或者直至当第一多阶哈希表的所有阶哈希表均发生冲突时,则可采用其它辅助方式缓存,比如可直接在内存中缓存该待缓存位置点及其所对应的兴趣点标识。
其中第一多阶哈希表的阶数一般小于或等于50阶,优选为16~32阶。且每阶哈希表中哈希地址的个数为素数,且各阶哈希表中哈希地址的个数按阶数递减。由于多阶哈希表中发生冲突的频次是按第一多阶哈希表的阶数递减的,因此各阶哈希表的哈希地址的个数按阶数递减,可以节省存储空间。
当采用第一多阶哈希表缓存位置点和兴趣点标识的对应关系时,兴趣点标识缓存查询模块506还用于将待查询位置点作为关键字代入第一哈希函数获得相应的第二哈希地址,根据该第二哈希地址获取第一多阶哈希表中的第一阶哈希表中的第二哈希地址中存储的位置点和兴趣点标识。兴趣点标识缓存查询模块506用于判断该获取的位置点是否与待查询位置点一致,若一致则当前获取的兴趣点标识即为待查询位置点所对应的兴趣点标识。若不一致则说明该第二哈希地址存在冲突,则兴趣点标识缓存查询模块506可用于继续从该冲突的第二哈希地址所映射的下一阶哈希表中的哈希地址中获取位置点和兴趣点标识,直至获取的位置点与待查询位置点一致,以查询获得待查询位置点所对应的兴趣点标识。
本实施例中,采用第一多阶哈希表来缓存位置点和兴趣点标识的对应关系,通过非常少的计算步骤便可以从第一多阶哈希表中查询获得待查询位置点所对应的兴趣点标识,提高了查询效率。
在一个实施例中,兴趣点缓存查询模块508可用于通过第二多阶哈希表来缓存兴趣点标识和兴趣点的对应关系。
具体地,兴趣点缓存查询模块508可用于将待缓存的兴趣点标识作为关键字代入第二哈希函数以计算获得第三哈希地址,比如将该兴趣点标识的经度和维度拼接后代入第二哈希函数获得第三哈希地址。其中第二哈希函数可以是线形函数、多次函数、随机函数、取余函数等等。
然后兴趣点缓存查询模块508可用于尝试将该待缓存兴趣点标识和其所对应的兴趣点存储到第二多阶哈希表的第一阶哈希表中的第三哈希地址中。当在第二多阶哈希表的当前一阶哈希表中的第三哈希地址处发生冲突时,则兴趣点缓存查询模块508可用于尝试向与该阶哈希表相邻的下一阶哈希表中缓存该待缓存兴趣点标识和其所对应的兴趣点;并用于记录该阶哈希表中第三哈希地址与下一阶哈希表中的第三哈希地址的映射关系,直至缓存该待缓存兴趣点标识及其对应的兴趣点成功;或者直至当第二多阶哈希表的所有阶哈希表均发生冲突时,则可采用其它辅助方式缓存,比如可直接在内存中缓存该待缓存兴趣点标识及其所对应的兴趣点。
其中第二多阶哈希表的阶数一般小于或等于50阶,优选为16~32阶。且每阶哈希表中哈希地址的个数为素数,且各阶哈希表中哈希地址的个数按阶数递减。由于第二多阶哈希表中发生冲突的频次是按第二多阶哈希表的阶数递减的,因此各阶哈希表的哈希地址的个数按阶数递减,可以节省存储空间。
当采用第二多阶哈希表缓存兴趣点标识和兴趣点的对应关系时,兴趣点缓存查询模块508还用于将查询到的兴趣点标识作为关键字代入第二哈希函数获得相应的第四哈希地址,根据该第四哈希地址获取第二多阶哈希表中的第一阶哈希表中的第四哈希地址中存储的兴趣点标识和兴趣点。然后兴趣点缓存查询模块508可用于判断该获取的兴趣点标识是否与查询到的兴趣点标识一致,若一致则获取的兴趣点即为查询到的兴趣点标识所对应的兴趣点。若不一致则说明该第四哈希地址存在冲突,则用于继续从该冲突的第四哈希地址所映射的下一阶哈希表中的哈希地址中获取兴趣点标识和兴趣点,直至获取的兴趣点标识与查询到的兴趣点标识一致,以查询获得上述查询到的兴趣点标识所对应的兴趣点。这里查询到的兴趣点标识为上述以待查询位置点为索引而查询到的兴趣点标识。
本实施例中,采用第二多阶哈希表来缓存兴趣点标识和兴趣点的对应关系,通过非常少的计算步骤便可以从第二多阶哈希表中查询获得上述查询到的兴趣点标识所对应的兴趣点,提高了查询效率。
本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成的,计算机程序可存储于一计算机可读取存储介质中。该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种兴趣点查询方法,所述方法包括:
接收兴趣点查询请求;
根据所述兴趣点查询请求确定待查询位置点;
根据预先缓存的位置点和兴趣点标识的对应关系,以所述待查询位置点为索引查询兴趣点标识;
当查询到所述待查询位置点所对应的兴趣点标识后,根据预先缓存的兴趣点标识和兴趣点的对应关系,以所述查询到的兴趣点标识为索引,查询获得所述查询到的兴趣点标识所对应的兴趣点。
2.根据权利要求1所述的方法,其特征在于,所述兴趣点查询请求包括用户标识;所述根据所述兴趣点查询请求确定待查询位置点,包括:
根据所述兴趣点查询请求,获取所述用户标识所对应的待查询位置点的集合。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当以所述待查询位置点为索引未查询到兴趣点标识,或者以所述查询到的兴趣点标识为索引未查询到兴趣点时,则
通过电子地图提供的兴趣点查询接口以查询获得所述待查询位置点所对应的兴趣点。
4.根据权利要求3所述的方法,其特征在于,所述通过兴趣点查询接口查询获得的兴趣点包括兴趣点标识属性;所述方法还包括:
根据所述待查询位置点和所述兴趣点标识属性,更新所述缓存的位置点和兴趣点标识的对应关系;
根据所述兴趣点标识属性和所述通过兴趣点查询接口查询获得的兴趣点,更新所述缓存的兴趣点标识和兴趣点的对应关系。
5.根据权利要求1所述的方法,其特征在于,所述缓存的兴趣点经过序列化处理。
6.一种兴趣点查询***,其特征在于,所述***包括:
请求接收模块,用于接收兴趣点查询请求;
待查询位置点确定模块,用于根据所述兴趣点查询请求确定待查询位置点;
兴趣点标识缓存查询模块,用于根据预先缓存的位置点和兴趣点标识的对应关系,以所述待查询位置点为索引查询兴趣点标识;
兴趣点缓存查询模块,用于当查询到所述待查询位置点所对应的兴趣点标识后,根据预先缓存的兴趣点标识和兴趣点的对应关系,以所述查询到的兴趣点标识为索引,查询获得所述查询到的兴趣点标识所对应的兴趣点。
7.根据权利要求6所述的***,其特征在于,所述兴趣点查询请求包括用户标识;所述待查询位置点确定模块还用于根据所述兴趣点查询请求,获取所述用户标识所对应的待查询位置点的集合。
8.根据权利要求6所述的***,其特征在于,所述***还包括:辅助兴趣点查询模块,用于当以所述待查询位置点为索引未查询到兴趣点标识,或者以所述查询到的兴趣点标识为索引未查询到兴趣点时,则通过电子地图提供的兴趣点查询接口以查询获得所述待查询位置点所对应的兴趣点。
9.根据权利要求8所述的***,其特征在于,所述通过兴趣点查询接口查询获得的兴趣点包括兴趣点标识属性;所述***还包括:
兴趣点标识缓存更新模块,用于根据所述待查询位置点和所述兴趣点标识属性,更新所述缓存的位置点和兴趣点标识的对应关系;
兴趣点缓存更新模块,用于根据所述兴趣点标识属性和所述通过兴趣点查询接口查询获得的兴趣点,更新所述缓存的兴趣点标识和兴趣点的对应关系。
10.根据权利要求6所述的***,其特征在于,所述缓存的兴趣点经过序列化处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410161417.6A CN105005567B (zh) | 2014-04-21 | 2014-04-21 | 兴趣点查询方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410161417.6A CN105005567B (zh) | 2014-04-21 | 2014-04-21 | 兴趣点查询方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105005567A true CN105005567A (zh) | 2015-10-28 |
CN105005567B CN105005567B (zh) | 2022-04-26 |
Family
ID=54378243
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410161417.6A Active CN105005567B (zh) | 2014-04-21 | 2014-04-21 | 兴趣点查询方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105005567B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105554743A (zh) * | 2015-12-15 | 2016-05-04 | 南京信息工程大学 | 一种避免重叠圆形攻击的移动用户位置隐私的保护方法 |
CN106297369A (zh) * | 2016-11-04 | 2017-01-04 | 重庆两江新区临济信息技术有限公司 | 一种基于北斗卫星导航的车辆监控***及监控方法 |
CN110457420A (zh) * | 2019-08-13 | 2019-11-15 | 腾讯云计算(北京)有限责任公司 | 兴趣点位置识别方法、装置、设备及存储介质 |
CN110955820A (zh) * | 2018-09-22 | 2020-04-03 | 北京微播视界科技有限公司 | 一种媒体信息兴趣点推荐方法、装置、服务器及存储介质 |
CN111338986A (zh) * | 2020-03-13 | 2020-06-26 | 北京艾克斯特科技有限公司 | 一种三维模型数据结构、创建及数据获取方法 |
CN113553343A (zh) * | 2021-06-29 | 2021-10-26 | 通号城市轨道交通技术有限公司 | 电子地图数据查询方法及*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070217676A1 (en) * | 2006-03-15 | 2007-09-20 | Kristen Grauman | Pyramid match kernel and related techniques |
CN102591984A (zh) * | 2012-01-10 | 2012-07-18 | 武汉光庭科技有限公司 | 导航数据中兴趣点数据查询速度的优化方法 |
CN103377210A (zh) * | 2012-04-19 | 2013-10-30 | 北京四维图新科技股份有限公司 | 建立增量型导航数据库的方法和对数据库进行更新的方法 |
-
2014
- 2014-04-21 CN CN201410161417.6A patent/CN105005567B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070217676A1 (en) * | 2006-03-15 | 2007-09-20 | Kristen Grauman | Pyramid match kernel and related techniques |
CN102591984A (zh) * | 2012-01-10 | 2012-07-18 | 武汉光庭科技有限公司 | 导航数据中兴趣点数据查询速度的优化方法 |
CN103377210A (zh) * | 2012-04-19 | 2013-10-30 | 北京四维图新科技股份有限公司 | 建立增量型导航数据库的方法和对数据库进行更新的方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105554743A (zh) * | 2015-12-15 | 2016-05-04 | 南京信息工程大学 | 一种避免重叠圆形攻击的移动用户位置隐私的保护方法 |
CN106297369A (zh) * | 2016-11-04 | 2017-01-04 | 重庆两江新区临济信息技术有限公司 | 一种基于北斗卫星导航的车辆监控***及监控方法 |
CN110955820A (zh) * | 2018-09-22 | 2020-04-03 | 北京微播视界科技有限公司 | 一种媒体信息兴趣点推荐方法、装置、服务器及存储介质 |
CN110457420A (zh) * | 2019-08-13 | 2019-11-15 | 腾讯云计算(北京)有限责任公司 | 兴趣点位置识别方法、装置、设备及存储介质 |
CN110457420B (zh) * | 2019-08-13 | 2024-04-16 | 腾讯云计算(北京)有限责任公司 | 兴趣点位置识别方法、装置、设备及存储介质 |
CN111338986A (zh) * | 2020-03-13 | 2020-06-26 | 北京艾克斯特科技有限公司 | 一种三维模型数据结构、创建及数据获取方法 |
CN111338986B (zh) * | 2020-03-13 | 2023-08-04 | 北京艾克斯特科技有限公司 | 一种获取三维模型数据结构中数据的方法 |
CN113553343A (zh) * | 2021-06-29 | 2021-10-26 | 通号城市轨道交通技术有限公司 | 电子地图数据查询方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN105005567B (zh) | 2022-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106911780B (zh) | 业务id生成方法、装置及*** | |
CN105005567A (zh) | 兴趣点查询方法和*** | |
KR101994021B1 (ko) | 파일 조작 방법 및 장치 | |
CN107784044B (zh) | 表数据查询方法及装置 | |
CN101867607A (zh) | 一种分布式数据存取方法、装置及*** | |
JP7407209B2 (ja) | 情報プッシュ方法及び装置 | |
CN102402605A (zh) | 用于搜索引擎索引的混合分布模型 | |
CN105243060A (zh) | 一种检索图片的方法及装置 | |
CN110321325A (zh) | 文件索引节点查找方法、终端、服务器、***及存储介质 | |
CN104794228A (zh) | 一种搜索结果提供方法及装置 | |
CN104679830A (zh) | 一种文件处理方法和装置 | |
CN107918527B (zh) | 存储空间分配方法及装置以及文件存储方法及装置 | |
CN104539750A (zh) | 一种ip定位方法和装置 | |
CN104516920A (zh) | 数据查询方法和数据查询*** | |
CN101551826A (zh) | 数据检索方法、装置及其*** | |
CN103577544A (zh) | 一种用于提供待发送信息的方法及装置 | |
CN116108150A (zh) | 一种智能问答方法、装置、***及电子设备 | |
CN111831691B (zh) | 一种数据读写方法及装置、电子设备、存储介质 | |
CN114817651A (zh) | 数据存储方法、数据查询方法、装置和设备 | |
CN117435776B (zh) | 元数据存储和查询方法、装置、计算机设备及存储介质 | |
CN112231398B (zh) | 数据存储方法、装置、设备及存储介质 | |
CN113377817A (zh) | 数据处理方法、***、设备及存储介质 | |
CN103186542A (zh) | 一种数据查询的方法及装置 | |
CN105260465A (zh) | 一种图数据处理服务的方法、装置 | |
CN108256064B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |