CN108345607A - 搜索方法和装置 - Google Patents
搜索方法和装置 Download PDFInfo
- Publication number
- CN108345607A CN108345607A CN201710054538.4A CN201710054538A CN108345607A CN 108345607 A CN108345607 A CN 108345607A CN 201710054538 A CN201710054538 A CN 201710054538A CN 108345607 A CN108345607 A CN 108345607A
- Authority
- CN
- China
- Prior art keywords
- hilbert
- coding
- area
- successively
- matched
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/29—Geographical information databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9537—Spatial or temporal dependent retrieval, e.g. spatiotemporal queries
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Remote Sensing (AREA)
- Position Fixing By Use Of Radio Waves (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种搜索方法和装置。其中,该方法包括:获取用于表示第一区域的第一希尔伯特编码;在未获取到地域信息的情况下,将第一希尔伯特编码依次与第一集合中每个元素进行匹配,将匹配成功的元素构成的集合作为第二集合;依次获取第一终端的地理位置与第二集合中每个元素的地理位置之间的距离;将最小的距离对应的元素作为目标元素;在获取到地域信息的情况下,将第一希尔伯特编码依次与第三集合中每个元素进行匹配,将匹配成功的元素构成的集合作为第四集合;依次获取第一终端的地理位置与第四集合中每个元素的地理位置之间的距离;将最小的距离对应的元素作为目标元素。本发明解决了现有技术中无法快速、准确进行搜索的技术问题。
Description
技术领域
本发明涉及搜索领域,具体而言,涉及一种搜索方法和装置。
背景技术
用户搜索离自身最近的餐馆、银行、医院等的搜索问题可以归纳为NNS(NearestNeighbor Search)问题,一般称为最近邻问题。最近邻问题的数学表述是:在M空间中有集合S,和一个同属于M空间的查询点q,找出S中离q最近的点。
以用户搜索最近的医院为例进行说明,假设用户所在的城市是北京市,现有技术中使用线性搜索方法,即,利用用户的经纬度信息和医院的经纬度信息,依次计算用户与北京市每个医院之间的距离,选择出最小的距离对应的医院作为搜索结果,即,距离用户最近的医院。
线性搜索方法简单可靠,但是有一个很大的缺点:当备选点很多(例如一个城市的医院数量非常多)时,这种搜索方法需要计算用户与每一个备选点之间的距离,计算量非常大,算法的时间复杂度线性增加,导致搜索速度慢。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种搜索方法和装置,以至少解决现有技术中无法快速、准确进行搜索的技术问题。
根据本发明实施例的一个方面,提供了一种搜索方法,包括:获取用于表示第一区域的第一希尔伯特编码,其中,所述第一区域是第一终端所在的区域;判断是否获取到所述第一区域的地域信息;在未获取到所述第一区域的地域信息的情况下,将所述第一希尔伯特编码依次与第一集合中每个元素的希尔伯特编码进行匹配,将匹配成功的元素构成的集合作为第二集合,其中,所述第一集合是预设范围的地域中第一类别的元素的集合,所述第一类别是待搜索的目标元素的类别;依次获取所述第一终端的地理位置与所述第二集合中每个元素的地理位置之间的距离;将最小的距离对应的元素作为所述目标元素;在获取到所述第一区域的地域信息的情况下,将所述第一希尔伯特编码依次与第三集合中每个元素的希尔伯特编码进行匹配,将匹配成功的元素构成的集合作为第四集合,其中,所述第三集合是所述第一区域所处的地域中所述第一类别的元素的集合,所述预设范围的地域包括所述第一区域所处的地域;依次获取所述第一终端的地理位置与所述第四集合中每个元素的地理位置之间的距离;将最小的距离对应的元素作为所述目标元素。
根据本发明实施例的另一方面,还提供了一种搜索装置,包括:第一获取单元,用于获取用于表示第一区域的第一希尔伯特编码,其中,所述第一区域是第一终端所在的区域;第一判断单元,用于判断是否获取到所述第一区域的地域信息;第一匹配单元,用于在未获取到所述第一区域的地域信息的情况下,将所述第一希尔伯特编码依次与第一集合中每个元素的希尔伯特编码进行匹配,将匹配成功的元素构成的集合作为第二集合,其中,所述第一集合是预设范围的地域中第一类别的元素的集合,所述第一类别是待搜索的目标元素的类别;第二获取单元,用于依次获取所述第一终端的地理位置与所述第二集合中每个元素的地理位置之间的距离;第一确定单元,用于将最小的距离对应的元素作为所述目标元素;第二匹配单元,用于在获取到所述第一区域的地域信息的情况下,将所述第一希尔伯特编码依次与第三集合中每个元素的希尔伯特编码进行匹配,将匹配成功的元素构成的集合作为第四集合,其中,所述第三集合是所述第一区域所处的地域中所述第一类别的元素的集合,所述预设范围的地域包括所述第一区域所处的地域;第三获取单元,用于依次获取所述第一终端的地理位置与所述第四集合中每个元素的地理位置之间的距离;第二确定单元,用于将最小的距离对应的元素作为所述目标元素。
在本发明实施例中,先使用希尔伯特编码从大量的备选点中筛选出距离用户较近的少量备选点,再使用线性搜索方法计算用户与这些少量的备选点中每一个备选点的距离,筛选出距离最小的备选点,作为搜索结果(待搜索的目标元素)。通过将希尔伯特搜索方法与线性搜索方法相结合,只需要计算用户与少量的备选点之间的距离,避免了计算量随备选点的数量增加而线性增大的问题,时间复杂度为O(1),搜索速度快,搜索效率高,并且避免了希尔伯特算法从二维到一维降维之后信息的部分损失导致距离准确度降低的问题,达到了准确快速搜索的技术效果,进而解决了现有技术中无法快速、准确进行搜索的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的网络构架的示意图;
图2是根据本发明实施例的一种可选的搜索方法的流程图;
图3是根据本发明实施例的希尔伯特空间填充曲线的示意图;
图4是根据本发明实施例的另一种可选的搜索方法的流程图;
图5是根据本发明实施例的一种可选的搜索装置的示意图;
图6是根据本发明实施例的一种服务器的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
技术术语解释:
希尔伯特(Hilbert)空间索引算法:一种地理位置信息的编码算法,它采用一种自相似螺旋数据结构把地球表面空间划分成网格,采用Hilbert曲线进行空间填充。
线性搜索算法:解决最近邻问题的最简单的算法,即分别计算目标点和其它备选点的距离。
GeoHash算法:一种地理位置信息的编码算法,它采用一种自相似螺旋数据结构把地球表面空间划分成网格,一般采用Z序曲线即Peano曲线进行空间填充,也可以采用其他曲线。
时间复杂度:定量描述算法的运行时间的函数,一般用大O符号表示。
根据本发明实施例,提供了一种搜索方法的实施例。
可选地,在本实施例中,上述搜索方法可以应用于如图1所示的由服务器102和终端104所构成的硬件环境中。如图1所示,服务器102通过网络与终端104进行连接,上述网络包括但不限于:广域网、城域网或局域网,终端104并不限定于PC、手机、平板电脑等。本发明实施例的搜索方法可以由服务器102来执行。本发明实施例提供的网络构架图如图1所示。如图1所示,终端104向服务器102上报终端104的经度信息和纬度信息,服务器102根据经度信息和纬度信息计算终端104所在区域的希尔伯特编码。服务器102存储了所有备选点及其对应的希尔伯特编码。服务器102根据用户所在区域的希尔伯特编码与终端104所在城市的所有备选点的希尔伯特编码的前若干位进行匹配,记录匹配成功的备选点的数量,如果匹配成功的备选点的数量较大,则增加进行匹配的希尔伯特编码的位数,继续进行匹配,直至匹配成功的备选点的数量较小为止。然后服务器102根据终端104的经纬度信息与匹配成功的备选点的经纬度信息计算终端104与每一个匹配成功的备选点之间的距离,并将最小的距离对应的备选点作为搜索结果(目标元素)。服务器102将搜索结果发送给终端104,终端104展示搜索结果。由于服务器102的计算能力远远超过终端104,因此,将搜索的计算过程使用服务器来完成,有利于提高搜索速度。
根据本发明实施例,提供了一种搜索方法,如图2所示,该方法包括以下步骤:
步骤S202,获取用于表示第一区域的第一希尔伯特编码,其中,第一区域是第一终端所在的区域。
步骤S204,判断是否获取到第一区域的地域信息。
步骤S206,在未获取到第一区域的地域信息的情况下,将第一希尔伯特编码依次与第一集合中每个元素的希尔伯特编码进行匹配,将匹配成功的元素构成的集合作为第二集合,其中,第一集合是预设范围的地域中第一类别的元素的集合,第一类别是待搜索的目标元素的类别。
步骤S208,依次获取第一终端的地理位置与第二集合中每个元素的地理位置之间的距离。
步骤S210,将最小的距离对应的元素作为目标元素。
步骤S212,在获取到第一区域的地域信息的情况下,将第一希尔伯特编码依次与第三集合中每个元素的希尔伯特编码进行匹配,将匹配成功的元素构成的集合作为第四集合,其中,第三集合是第一区域所处的地域中第一类别的元素的集合,预设范围的地域包括第一区域所处的地域。
步骤S214,依次获取第一终端的地理位置与第四集合中每个元素的地理位置之间的距离。
步骤S216,将最小的距离对应的元素作为目标元素。
本发明实施例采用希尔伯特空间索引算法对二维的经纬度数据进行编码,编码之后的经纬度变成一维的字符串,可以作为数据库的索引减少查询耗时,另外,线性搜索的算法时间复杂度为O(n),而希尔伯特空间索引结合线性搜索,可将时间复杂度降为O(1),大大节约搜索的整体耗时。
希尔伯特空间索引算法将二维的经纬度转换成一维数值,每一个数值代表一个矩形的区域,即该区域内的所有点(经纬度坐标)都对应着同一个数值。这是一个N阶递归算法,即把空间划分成2的N次方个网格,网格之间通过开口方向不同的U型线进行连接,临近的网格之间没有跃变,如图3所示。使用希尔伯特空间索引相当于把普通空间映射到希尔伯特空间,相邻的普通空间的希尔伯特空间编码中也相邻,即数值相邻(二进制字符串),这是希尔伯特空间索引算法一致性的保证。另外,N阶递归算法的意思也表明,希尔伯特曲线是自螺旋分层的。
希尔伯特空间索引是先进行区域划分,再进行二进制编码,为每一个区域赋予一个二进制编码值。如图3所示,当将二进制编码的结果填充到空间中并连接的时候,就形成了希尔伯特曲线,递归地将各个块分解成更小的子块时,编码的顺序是自相似的,即每个子块也形成希尔伯特曲线,这种类型的曲线就是希尔伯特空间填充曲线。
图3可以看出希尔伯特曲线不存在Peano填充曲线的邻近跃变问题。曲线随着U的开口方向变化,有四种变体。即每上升一阶,希尔伯特曲线不是简单的对父象限图像的重复,而是有规律的变化。因此,给定一个象限,其中的曲线是由象限所在的大的方形曲线以及该象限的位置共同决定的。
希尔伯特算法将二维的经纬度转换成一维字符串,每一个字符串代表一个矩形的区域,即该区域内的所有点(经纬度坐标)都对应着同一串字符串。字符串的长度代表算法的精度,长度越长则精度越高,所覆盖的区域就越小。字符串编码的前缀越相似,可大致表明地理位置上越接近,比如WX4ER和WX4ES相比于WX4ER和WX4G2来说,前面两个编码代表的区域更相邻。
用户需要搜索离自身最近的餐馆、银行、医院等。第一终端是用户的手机、电脑、平板等。
第一区域是第一终端所在的区域,由于用户随身携带第一终端,因此,第一区域也是用户所在的区域。
第一区域可以是一块长方形的区域,第一区域的面积可以根据需要进行设置。第一区域的希尔伯特编码能够表示第一区域的地理位置信息。
第一区域的面积越小,第一区域的希尔伯特编码就越长。
第一集合中的每个元素都是一个备选点。
地域信息可以指城市信息。预设范围的地域可以指全国所有城市这个范围。
如果第一终端无法获取到所在城市的信息,即,无法获取到第一区域的地域信息,则将第一希尔伯特编码依次与第一集合中每个元素的希尔伯特编码进行匹配。第一集合是第一终端所在的国家的所有城市的第一类别的元素的集合。
如果第一终端获取到所在城市的信息,即,获取到第一区域的地域信息,则将第一希尔伯特编码依次与第三集合中每个元素的希尔伯特编码进行匹配。第三集合是第一终端所在城市的第一类别的元素的集合。第三集合是第一集合的真子集。
当用户需要搜索的是离他最近的医院(医院即为第一类别)时,第一集合就是用户所在国家的所有医院构成的集合,第三集合就是用户所在城市的所有医院构成的集合,第一集合、第三集合中的每个元素代表一个医院。
当用户需要搜索的是离他最近的银行(银行即为第一类别)时,第一集合就是用户所在国家的所有银行构成的集合,第三集合就是用户所在城市的所有银行构成的集合,第一集合、第三集合中的每个元素代表一个银行。
第一集合中的每个元素都有唯一的希尔伯特编码,该希尔伯特编码用来表示元素的地理位置信息。
第一集合中有多个元素,在未获取到所述第一区域的地域信息的情况下,分别将用户所在区域的希尔伯特编码(第一希尔伯特编码)与第一集合中的每一个元素的希尔伯特编码进行匹配,将匹配成功的元素构成的集合作为第二集合。
第二集合中元素的数量远远小于第一集合中元素的数量。依次获取第一终端的地理位置与第二集合中所有元素的地理位置之间的距离。将最小的距离对应的元素作为待搜索的目标元素。服务器将搜索结果(目标元素的地理位置信息)发送给第一终端,用户就能知道距离他最近的备选点是哪一个。
在获取到所述第一区域的地域信息的情况下,分别将用户所在区域的希尔伯特编码(第一希尔伯特编码)与第三集合中的每一个元素的希尔伯特编码进行匹配,将匹配成功的元素构成的集合作为第四集合。
第四集合中元素的数量远远小于第三集合中元素的数量。依次获取第一终端的地理位置与第四集合中所有元素的地理位置之间的距离。将最小的距离对应的元素作为待搜索的目标元素。服务器将搜索结果(目标元素的地理位置信息)发送给第一终端,用户就能知道距离他最近的备选点是哪一个。
在此,有必要指出本申请中非常关键的一点,即为什么不直接使用希尔伯特算法进行搜索?而必须要将希尔伯特算法和线性搜索算法结合起来使用呢?原因如下:
尽管希尔伯特算法的实现可以保证编码前缀匹配度越高,两个区域越近邻,因为该算法确实将位置相近的点映射到了一起,但是从二维到一维降维之后信息的部分损失仍然会导致距离准确度的损失。而线性搜索算法弥补了希尔伯特空间索引算法因为降维带来的计算精度的问题,两个算法互为补充可以快速得出准确的搜索结果。
线性搜索主要关注距离计算方法,通常的距离计算方法有欧式距离、哈夫曼距离等,但经纬度之间的距离计算要稍微特殊些,因为是要计算在地球这个球体表面的曲线距离。本发明实施例中采纳的经纬度距离计算代码如下:
在本发明实施例中,先使用希尔伯特编码从大量的备选点中筛选出距离用户较近的少量备选点,再使用线性搜索方法计算用户与这些少量的备选点中每一个备选点的距离,筛选出距离最小的备选点,作为搜索结果(待搜索的目标元素)。通过将希尔伯特搜索方法与线性搜索方法相结合,只需要计算用户与少量的备选点之间的距离,避免了计算量随备选点的数量增加而线性增大的问题,时间复杂度为O(1),搜索速度快,搜索效率高,并且避免了希尔伯特算法从二维到一维降维之后信息的部分损失导致距离准确度降低的问题,从而解决了现有技术中无法快速、准确进行搜索的技术问题,达到了准确快速搜索的技术效果。
在本发明实施例中,如果第一终端能够获取到自身所在的城市信息,那么第一终端会将其所在城市的信息发送给服务器,服务器将第一希尔伯特编码与第一终端所在城市的所有备选点进行匹配。
如果第一终端无法获取到自身所在的城市信息,那么服务器将第一希尔伯特编码与数据库中存储的所有城市的所有备选点进行匹配。
例如,用户无法获取自身所在的城市信息,用户的终端(第一终端)向服务器上报了用户的经纬度信息。服务器中存储了中国的1万个医院(这1万个医院构成了第一集合)及其对应的希尔伯特编码和经纬度信息。现有技术中,需要根据用户的经纬度信息与1万个医院的经纬度信息计算用户与1万个医院的距离,计算量非常大。本发明实施例提供的搜索方法,将第一希尔伯特编码与1万个医院的希尔伯特编码进行匹配,得到若干个匹配成功的医院,假设得到20个匹配成功的医院(这20个匹配成功的医院构成了第二集合),然后,根据用户的经纬度信息与20个医院的经纬度信息计算用户与20个医院的距离,显而易见,计算量不会随着备选点(医院)的数量增大而线性增大,相对于现有技术的方法,大大较少了计算量,提高了搜索速度。
获取第一希尔伯特编码(第一区域的希尔伯特编码)的过程可以如下:获取第一终端所在地理位置的经度信息和纬度信息;根据经度信息和纬度信息确定第一区域;计算第一区域的希尔伯特编码,得到第一希尔伯特编码。
希尔伯特编码表示的并不是一个点,而是一个矩形区域,这样既能表明用户所在的位置,又不至于暴露用户的精确坐标,有助于隐私保护。
可选地,按照以下方法依次将第一集合中每一个元素的希尔伯特编码的前i位与第一希尔伯特编码的前i位进行匹配:将第一元素的希尔伯特编码的前i位字符与第一希尔伯特编码的前i位字符一一进行比较,其中,第一元素是第一集合中的任意一个元素;如果第一元素的希尔伯特编码的前i位字符与第一希尔伯特编码的前i位字符相同,确定第一元素与第一区域匹配成功;如果第一元素的希尔伯特编码的前i位字符与第一希尔伯特编码的前i位字符不相同,确定第一元素与第一区域匹配失败。。
将第一元素的希尔伯特编码的前i位与第一希尔伯特编码的前i位进行匹配时,只有在第一元素的希尔伯特编码的前i位字符与第一希尔伯特编码的前i位字符一一对应相同时,才是匹配成功;否则,认为匹配失败。
例如,假设第一集合中某个元素Ek(第一元素)的希尔伯特编码是字符串“WX4ER”,第一希尔伯特编码是字符串“WX4ES”。字符串“WX4ER”的第1位字符与字符串“WX4ES”的前4位字符相同,第5位字符不相同,因此,将元素Ek的希尔伯特编码的第1位与第一希尔伯特编码的第1位进行匹配的结果是匹配成功;将元素Ek的希尔伯特编码的前2位与第一希尔伯特编码的前2位进行匹配的结果是匹配成功;将元素Ek的希尔伯特编码的前3位与第一希尔伯特编码的前3位进行匹配的结果是匹配成功;将元素Ek的希尔伯特编码的前4位与第一希尔伯特编码的前4位进行匹配的结果是匹配成功;将元素Ek的希尔伯特编码的前5位与第一希尔伯特编码的前5位进行匹配的结果是匹配失败。
可以看出,随着匹配前缀位数i的增加,第一集合中能够与第一希尔伯特编码的前i位字符匹配成功的元素会越来越少。
因此,如果需要将第二集合中元素的数量进行控制,只需要控制需要匹配的位数i。如果想要第二集合中的元素的数量稍微多一些,则i的值就可以小一些;如果想要第二集合中的元素的数量稍微少一些,则i的值就可以大一些。
可选地,将1赋给i。重复执行以下步骤,直至匹配成功的元素的数量小于等于第一预设数量:依次将第一集合中每一个元素的希尔伯特编码的前i位与第一希尔伯特编码的前i位进行匹配,得到第一集合中匹配成功的元素的数量;判断匹配成功的元素的数量是否小于等于第一预设数量;如果判断结果为否,将i+1的值赋给i。
第二集合中元素的数量小于等于第一预设数量。
依次将第一集合中每一个元素的希尔伯特编码的前i位与第一希尔伯特编码的前i位进行匹配,得到第一集合中匹配成功的元素的数量。判断匹配成功的元素的数量是否小于等于第一预设数量。如果判断结果为是,将匹配成功的元素构成的集合作为第二集合。
如果判断结果为否,将i+1的值赋给i。依次将第一集合中每一个元素的希尔伯特编码的前i位与第一希尔伯特编码的前i位进行匹配,得到第一集合中匹配成功的元素的数量。判断匹配成功的元素的数量是否小于等于第一预设数量。如果判断结果为是,将匹配成功的元素构成的集合作为第二集合。
如果判断结果为否,将i+1的值赋给i。继续进行匹配、判断。直至匹配成功的元素的数量小于等于第一预设数量,此时,结束,并将匹配成功的元素构成的集合作为第二集合。
上面的过程是一个循环过程。如果第一集合中与第一希尔伯特编码的前i位字符匹配成功的元素太多,那么就增大i的值,继续将第一集合中每一个元素的希尔伯特编码的前i位字符与第一希尔伯特编码的前i位字符进行匹配,直至第一集合中与第一希尔伯特编码的前i位字符匹配成功的元素的数量小于等于第一预设数量。
可选地,在将最小的距离对应的元素作为待搜索的目标元素之后,方法还包括:将第一希尔伯特编码与目标元素进行关联,得到关联关系;存储关联关系,其中,关联关系用于提供给第一区域内的多个终端,以便多个终端根据关联关系确定目标元素。
当终端向服务器发起搜索请求之后,当获取到终端所在的第一区域的希尔伯特编码(第一希尔伯特编码)之后,先判断是否存储有关联关系;如果存储有关联关系,根据关联关系确定目标元素;如果未存储关联关系,则确定将第一希尔伯特编码依次与第一集合中每个元素的希尔伯特编码进行匹配。
希尔伯特编码表示的并不是一个点,而是一个矩形区域,这样既能表明用户所在的位置,又不至于暴露用户的精确坐标,有助于隐私保护,而且比较容易做缓存。比如某个区域内有多个用户发起最近邻查询,则可以把该区域的希尔伯特编码和目标元素的映射关系做缓存,达到快速响应用户需求的目的。
比如某个区域内有多个用户发起最近邻医院查询,则可以把该区域的希尔伯特编码和最近医院的映射关系做缓存,达到快速响应用户需求的目的。但如果使用经纬度的话,不同用户的经纬度是不一样的,这样很难做缓存。
将关联关系存储在服务器中,这样,当第一区域的终端向服务器发起搜索请求时,服务器可以直接在关联关系中查找与第一区域相关联的目标元素,然后将目标元素的位置信息发送给第一区域中的终端,搜索速度非常快。
线性搜索的算法时间复杂度为O(n),而希尔伯特结合线性搜索,可将时间复杂度降为O(1),大大节约搜索的整体耗时。
希尔伯特空间索引算法在医院搜索中的应用主要是降低线性搜索算法的时间复杂度,而线性搜索算法又弥补了希尔伯特空间索引算法因为降维带来的计算精度的问题,两个算法互为补充可以快速得出准确的医院搜索结果。
现有技术中有一种技术方案是结合GeoHash和线性搜索算法,但GeoHash的Peano空间填充曲线的邻近跃变问题难以解决,使得搜索精确度低。
相较于GeoHash算法,希尔伯特空间索引算法采用更为合理的空间填充曲线,可以解决GeoHash算法的Peano曲线带来的边界突变性问题。
图4是根据本发明实施例的另一种可选的搜索方法的流程图。如图4所示,该方法包括以下步骤:
步骤S502,判断是否成功获取用户所在的城市信息。如果判断结果为是,执行步骤S504;如果判断结果为否,执行步骤S508。
用户可以通过第一终端的地图类应用程序查询用户所在的城市。
通过LBS服务能够获取用户的经纬度信息。根据用户的经纬度信息能够计算出用户所在的区域的希尔伯特编码,即,上述第一希尔伯特编码。
步骤S504,获取数据库中该城市的医院。
步骤S506,判断用户所在的城市是否为省会或者一线城市。如果判断结果为是,执行步骤S508;如果判断结果为否,执行步骤S514。
如果用户所在的城市不是一线城市,也不是省会,那么用户所在的城市的医院数量较少,此时,可以直接用线性搜索方法计算用户与每个医院的距离。
如果用户所在的城市为省会或者一线城市,那么用户所在的城市的医院数量较多,此时,需要将希尔伯特算法与线性算法相结合使用,先使用希尔伯特算法筛选出一些医院,再用线性搜索方法计算用户与筛选出的每个医院的距离。
步骤S508,通过希尔伯特编码前缀在数据库中查找医院。
将数据库中存储的每一个医院的前i位字符与第一希尔伯特编码的前i位字符进行一一比较,以确定能否匹配成功。其中,i是希尔伯特编码前缀匹配的位数,可以根据经验对i赋予初始值。统计匹配成功的医院的数量。
步骤S510,判断医院数目是否小于等于设定阈值。即,判断匹配成功的医院的数量是否小于等于设定阈值。设定阈值即为上述第一预设数量。
如果判断结果为是,执行步骤S514;如果判断结果为否,执行步骤S512。
步骤S512,搜索前缀增加一位。将i+1的值赋给i。
如果匹配成功的医院的数量大于设定阈值,则说明匹配成功的医院太多了,需要将搜索前缀增加一位,继续匹配,直至匹配成功的医院的数量小于等于设定阈值。
步骤S514,使用线性搜索算法计算。
如果用户所在的城市不是一线城市,也不是省会,那么用户所在的城市的医院数量较少,此时,可以直接用线性搜索方法计算用户与每个医院的距离。
用户所在的城市为省会或者一线城市,那么用户所在的城市的医院数量较多,此时,需要将希尔伯特算法与线性算法相结合使用,先使用希尔伯特算法筛选出一些医院,再用线性搜索方法计算用户与筛选出的每个医院的距离。
本发明实施例提供的搜索方法在集合中元素数量较多的时候,优势非常明显。因为现有技术中线性搜索方法会逐一根据用户的经纬度和集合中的每个元素的经纬度计算距离,计算量随着集合中元素的数量的增加线性增加,非常耗时,搜索效率低,搜索速度慢,对用户来说,终端的搜索结果页的展现速度慢,用户体验差。对于无法获取到用户所在的城市信息的情况,本发明实施例提供的搜索方法相对于现有技术的优势更加明显。
本技术方案采用希尔伯特算法对二维的经纬度数据进行编码,编码之后的经纬度变成一维的字符串,可以作为数据库的索引减少查询耗时,另外,线性搜索的算法时间复杂度为O(n),而希尔伯特算法结合线性搜索,可将时间复杂度降为O(1),大大节约搜索的整体耗时。
本方案不仅适应于医院的搜索,对于跟医院类似的稀疏分布的POI搜索都是可行的。如果采用其他的空间填充曲线也是可行的,可以根据具体的应用场景进行替换。希尔伯特填充曲线的阶数N需要经过实验得出,对于医院这种较为稀疏的POI,N的值较小,因此编码长度也会比较短,比较方便比较,这也是本方案采用希尔伯特曲线的原因。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
根据本发明实施例,还提供了一种用于实施上述搜索方法的搜索装置,如图5所示,该装置包括:第一获取单元10、第一判断单元20、第一匹配单元30、第二获取单元40、第一确定单元50、第二匹配单元60、第三获取单元70、第二确定单元80。
第一获取单元10,用于获取用于表示第一区域的第一希尔伯特编码,其中,第一区域是第一终端所在的区域;
第一判断单元20,用于判断是否获取到第一区域的地域信息;
第一匹配单元30,用于在未获取到第一区域的地域信息的情况下,将第一希尔伯特编码依次与第一集合中每个元素的希尔伯特编码进行匹配,将匹配成功的元素构成的集合作为第二集合,其中,第一集合是预设范围的地域中第一类别的元素的集合,第一类别是待搜索的目标元素的类别;
第二获取单元40,用于依次获取第一终端的地理位置与第二集合中每个元素的地理位置之间的距离;
第一确定单元50,用于将最小的距离对应的元素作为目标元素;
第二匹配单元60,用于在获取到第一区域的地域信息的情况下,将第一希尔伯特编码依次与第三集合中每个元素的希尔伯特编码进行匹配,将匹配成功的元素构成的集合作为第四集合,其中,第三集合是第一区域所处的地域中第一类别的元素的集合,预设范围的地域包括第一区域所处的地域;
第三获取单元70,用于依次获取第一终端的地理位置与第四集合中每个元素的地理位置之间的距离;
第二确定单元80,用于将最小的距离对应的元素作为目标元素。
可选地,第一匹配单元30包括:第一赋值子单元、第一循环子单元。第一赋值子单元,用于将1赋值给变量i,变量i为将两个希尔伯特编码进行匹配的前缀的位数。第一循环子单元,用于重复执行以下步骤,直至匹配成功的元素的数量小于等于第一预设数量,其中,第一预设数量小于第一集合中元素的数量:依次将第一集合中每一个元素的希尔伯特编码的前i位与第一希尔伯特编码的前i位进行匹配,得到第一集合中匹配成功的元素的数量;判断匹配成功的元素的数量是否小于等于第一预设数量;如果判断结果为否,将i+1的值赋给i。
可选地,第二匹配单元60包括:第二赋值子单元、第二循环子单元。第二赋值子单元,用于将1赋值给变量i,变量i为将两个希尔伯特编码进行匹配的前缀的位数。第二循环子单元,用于重复执行以下步骤,直至匹配成功的元素的数量小于等于第一预设数量,其中,第一预设数量小于第一集合中元素的数量:依次将第三集合中每一个元素的希尔伯特编码的前i位与第一希尔伯特编码的前i位进行匹配,得到第三集合中匹配成功的元素的数量;判断匹配成功的元素的数量是否小于等于第一预设数量;如果判断结果为否,将i+1的值赋给i。
可选地,第一循环子单元包括:比较模块、第一确定模块、第二确定模块。比较模块,用于将第一元素的希尔伯特编码的前i位字符与第一希尔伯特编码的前i位字符一一进行比较,其中,第一元素是第一集合中的任意一个元素。第一确定模块,用于如果第一元素的希尔伯特编码的前i位字符与第一希尔伯特编码的前i位字符相同,确定第一元素与第一区域匹配成功。第二确定模块,用于如果第一元素的希尔伯特编码的前i位字符与第一希尔伯特编码的前i位字符不相同,确定第一元素与第一区域匹配失败。
可选地,装置还包括:关联单元、存储单元。关联单元,用于在将最小的距离对应的元素作为目标元素之后,将第一希尔伯特编码与目标元素进行关联,得到关联关系。存储单元,用于存储关联关系,其中,关联关系用于提供给第一区域内的多个终端,以便多个终端根据关联关系确定目标元素。
可选地,装置还包括:第二判断单元、第三确定单元、第四确定单元。第二判断单元,用于在将第一希尔伯特编码依次与第一集合中每个元素的希尔伯特编码进行匹配之前,或者,在将第一希尔伯特编码依次与第三集合中每个元素的希尔伯特编码进行匹配之前,判断是否存储有关联关系。第三确定单元,用于如果存储有关联关系,根据关联关系确定目标元素。第四确定单元,用于如果未存储关联关系,则确定将第一希尔伯特编码依次与第一集合中每个元素的希尔伯特编码进行匹配。
可选地,第一获取单元10包括:获取子单元、确定子单元、计算子单元。获取子单元,用于获取第一终端所在地理位置的经度信息和纬度信息。确定子单元,用于根据经度信息和纬度信息确定第一区域。计算子单元,用于计算第一区域的希尔伯特编码,得到第一希尔伯特编码。
根据本发明实施例,还提供了一种用于实施上述搜索方法的服务器,如图6所示,该服务器主要包括处理器701、显示器703、数据接口704、存储器705和网络接口706,其中:
数据接口704则主要通过数据传输的方式将第一终端的经纬度信息传输给处理器701。
存储器705主要用于存储希尔伯特编码、第一终端的经纬度信息等。
网络接口706主要用于与终端和其他服务器进行网络通信。
显示器703主要用于显示希尔伯特编码、第一终端的经纬度信息等。
处理器701主要用于执行如下操作:
获取用于表示第一区域的第一希尔伯特编码,其中,第一区域是第一终端所在的区域;判断是否获取到第一区域的地域信息;在未获取到第一区域的地域信息的情况下,将第一希尔伯特编码依次与第一集合中每个元素的希尔伯特编码进行匹配,将匹配成功的元素构成的集合作为第二集合,其中,第一集合是预设范围的地域中第一类别的元素的集合,第一类别是待搜索的目标元素的类别;依次获取第一终端的地理位置与第二集合中每个元素的地理位置之间的距离;将最小的距离对应的元素作为目标元素;在获取到第一区域的地域信息的情况下,将第一希尔伯特编码依次与第三集合中每个元素的希尔伯特编码进行匹配,将匹配成功的元素构成的集合作为第四集合,其中,第三集合是第一区域所处的地域中第一类别的元素的集合,预设范围的地域包括第一区域所处的地域;依次获取第一终端的地理位置与第四集合中每个元素的地理位置之间的距离;将最小的距离对应的元素作为目标元素。
处理器701还用于执行:将1赋值给变量i,变量i为将两个希尔伯特编码进行匹配的前缀的位数;重复执行以下步骤,直至匹配成功的元素的数量小于等于第一预设数量,其中,第一预设数量小于第一集合中元素的数量:依次将第一集合中每一个元素的希尔伯特编码的前i位与第一希尔伯特编码的前i位进行匹配,得到第一集合中匹配成功的元素的数量;判断匹配成功的元素的数量是否小于等于第一预设数量;如果判断结果为否,将i+1的值赋给i。
处理器701还用于执行:将1赋值给变量i,变量i为将两个希尔伯特编码进行匹配的前缀的位数;重复执行以下步骤,直至匹配成功的元素的数量小于等于第一预设数量,其中,第一预设数量小于第一集合中元素的数量:依次将第三集合中每一个元素的希尔伯特编码的前i位与第一希尔伯特编码的前i位进行匹配,得到第三集合中匹配成功的元素的数量;判断匹配成功的元素的数量是否小于等于第一预设数量;如果判断结果为否,将i+1的值赋给i。
处理器701还用于执行:将第一元素的希尔伯特编码的前i位字符与第一希尔伯特编码的前i位字符一一进行比较,其中,第一元素是第一集合中的任意一个元素;如果第一元素的希尔伯特编码的前i位字符与第一希尔伯特编码的前i位字符相同,确定第一元素与第一区域匹配成功;如果第一元素的希尔伯特编码的前i位字符与第一希尔伯特编码的前i位字符不相同,确定第一元素与第一区域匹配失败。
处理器701还用于执行:将第一希尔伯特编码与目标元素进行关联,得到关联关系;存储关联关系,其中,关联关系用于提供给第一区域内的多个终端,以便多个终端根据关联关系确定目标元素。
处理器701还用于执行:判断是否存储有关联关系;如果存储有关联关系,根据关联关系确定目标元素;如果未存储关联关系,则确定将第一希尔伯特编码依次与第一集合中每个元素的希尔伯特编码进行匹配。
处理器701还用于执行:获取第一终端所在地理位置的经度信息和纬度信息;根据经度信息和纬度信息确定第一区域;计算第一区域的希尔伯特编码,得到第一希尔伯特编码。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于存储本发明实施例的搜索方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于移动通信网络、广域网、城域网或局域网的网络中的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
S1,获取用于表示第一区域的第一希尔伯特编码,其中,所述第一区域是第一终端所在的区域;
S2,判断是否获取到所述第一区域的地域信息;
S3,在未获取到所述第一区域的地域信息的情况下,将所述第一希尔伯特编码依次与第一集合中每个元素的希尔伯特编码进行匹配,将匹配成功的元素构成的集合作为第二集合,其中,所述第一集合是预设范围的地域中第一类别的元素的集合,所述第一类别是待搜索的目标元素的类别;
S4,依次获取所述第一终端的地理位置与所述第二集合中每个元素的地理位置之间的距离;
S5,将最小的距离对应的元素作为所述目标元素;
S6,在获取到所述第一区域的地域信息的情况下,将所述第一希尔伯特编码依次与第三集合中每个元素的希尔伯特编码进行匹配,将匹配成功的元素构成的集合作为第四集合,其中,所述第三集合是所述第一区域所处的地域中所述第一类别的元素的集合,所述预设范围的地域包括所述第一区域所处的地域;
S7,依次获取所述第一终端的地理位置与所述第四集合中每个元素的地理位置之间的距离;
S8,将最小的距离对应的元素作为所述目标元素。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:将1赋值给变量i,变量i为将两个希尔伯特编码进行匹配的前缀的位数;重复执行以下步骤,直至匹配成功的元素的数量小于等于第一预设数量,其中,第一预设数量小于第一集合中元素的数量:依次将第一集合中每一个元素的希尔伯特编码的前i位与第一希尔伯特编码的前i位进行匹配,得到第一集合中匹配成功的元素的数量;判断匹配成功的元素的数量是否小于等于第一预设数量;如果判断结果为否,将i+1的值赋给i。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:将1赋值给变量i,变量i为将两个希尔伯特编码进行匹配的前缀的位数;重复执行以下步骤,直至匹配成功的元素的数量小于等于第一预设数量,其中,第一预设数量小于第一集合中元素的数量:依次将第三集合中每一个元素的希尔伯特编码的前i位与第一希尔伯特编码的前i位进行匹配,得到第三集合中匹配成功的元素的数量;判断匹配成功的元素的数量是否小于等于第一预设数量;如果判断结果为否,将i+1的值赋给i。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:将第一元素的希尔伯特编码的前i位字符与第一希尔伯特编码的前i位字符一一进行比较,其中,第一元素是第一集合中的任意一个元素;如果第一元素的希尔伯特编码的前i位字符与第一希尔伯特编码的前i位字符相同,确定第一元素与第一区域匹配成功;如果第一元素的希尔伯特编码的前i位字符与第一希尔伯特编码的前i位字符不相同,确定第一元素与第一区域匹配失败。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:将第一希尔伯特编码与目标元素进行关联,得到关联关系;存储关联关系,其中,关联关系用于提供给第一区域内的多个终端,以便多个终端根据关联关系确定目标元素。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:判断是否存储有关联关系;如果存储有关联关系,根据关联关系确定目标元素;如果未存储关联关系,则确定将第一希尔伯特编码依次与第一集合中每个元素的希尔伯特编码进行匹配。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:获取第一终端所在地理位置的经度信息和纬度信息;根据经度信息和纬度信息确定第一区域;计算第一区域的希尔伯特编码,得到第一希尔伯特编码。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (14)
1.一种搜索方法,其特征在于,包括:
获取用于表示第一区域的第一希尔伯特编码,其中,所述第一区域是第一终端所在的区域;
判断是否获取到所述第一区域的地域信息;
在未获取到所述第一区域的地域信息的情况下,将所述第一希尔伯特编码依次与第一集合中每个元素的希尔伯特编码进行匹配,将匹配成功的元素构成的集合作为第二集合,其中,所述第一集合是预设范围的地域中第一类别的元素的集合,所述第一类别是待搜索的目标元素的类别;
依次获取所述第一终端的地理位置与所述第二集合中每个元素的地理位置之间的距离;
将最小的距离对应的元素作为所述目标元素;
在获取到所述第一区域的地域信息的情况下,将所述第一希尔伯特编码依次与第三集合中每个元素的希尔伯特编码进行匹配,将匹配成功的元素构成的集合作为第四集合,其中,所述第三集合是所述第一区域所处的地域中所述第一类别的元素的集合,所述预设范围的地域包括所述第一区域所处的地域;
依次获取所述第一终端的地理位置与所述第四集合中每个元素的地理位置之间的距离;
将最小的距离对应的元素作为所述目标元素。
2.根据权利要求1所述的方法,其特征在于,将所述第一希尔伯特编码依次与第一集合中每个元素的希尔伯特编码进行匹配包括:
将1赋值给变量i,所述变量i为将两个希尔伯特编码进行匹配的前缀的位数;
重复执行以下步骤,直至匹配成功的元素的数量小于等于第一预设数量,其中,所述第一预设数量小于所述第一集合中元素的数量:
依次将所述第一集合中每一个元素的希尔伯特编码的前i位与所述第一希尔伯特编码的前i位进行匹配,得到所述第一集合中匹配成功的元素的数量;
判断匹配成功的元素的数量是否小于等于所述第一预设数量;
如果判断结果为否,将i+1的值赋给i。
3.根据权利要求1所述的方法,其特征在于,将所述第一希尔伯特编码依次与第三集合中每个元素的希尔伯特编码进行匹配包括:
将1赋值给变量i,所述变量i为将两个希尔伯特编码进行匹配的前缀的位数;
重复执行以下步骤,直至匹配成功的元素的数量小于等于第一预设数量,其中,所述第一预设数量小于所述第一集合中元素的数量:
依次将所述第三集合中每一个元素的希尔伯特编码的前i位与所述第一希尔伯特编码的前i位进行匹配,得到所述第三集合中匹配成功的元素的数量;
判断匹配成功的元素的数量是否小于等于所述第一预设数量;
如果判断结果为否,将i+1的值赋给i。
4.根据权利要求2所述的方法,其特征在于,按照以下方法依次将所述第一集合中每一个元素的希尔伯特编码的前i位与所述第一希尔伯特编码的前i位进行匹配:
将第一元素的希尔伯特编码的前i位字符与所述第一希尔伯特编码的前i位字符一一进行比较,其中,所述第一元素是所述第一集合中的任意一个元素;
如果所述第一元素的希尔伯特编码的前i位字符与所述第一希尔伯特编码的前i位字符相同,确定所述第一元素与所述第一区域匹配成功;
如果所述第一元素的希尔伯特编码的前i位字符与所述第一希尔伯特编码的前i位字符不相同,确定所述第一元素与所述第一区域匹配失败。
5.根据权利要求1所述的方法,其特征在于,在将最小的距离对应的元素作为所述目标元素之后,所述方法还包括:
将所述第一希尔伯特编码与所述目标元素进行关联,得到关联关系;
存储所述关联关系,其中,所述关联关系用于提供给所述第一区域内的多个终端,以便所述多个终端根据所述关联关系确定所述目标元素。
6.根据权利要求5所述的方法,其特征在于,在将所述第一希尔伯特编码依次与第一集合中每个元素的希尔伯特编码进行匹配之前,或者,在将所述第一希尔伯特编码依次与第三集合中每个元素的希尔伯特编码进行匹配之前,所述方法还包括:
判断是否存储有所述关联关系;
如果存储有所述关联关系,根据所述关联关系确定所述目标元素;
如果未存储所述关联关系,则确定将所述第一希尔伯特编码依次与所述第一集合中每个元素的希尔伯特编码进行匹配。
7.根据权利要求1所述的方法,其特征在于,获取用于表示第一区域的第一希尔伯特编码,包括:
获取所述第一终端所在地理位置的经度信息和纬度信息;
根据所述经度信息和所述纬度信息确定所述第一区域;
计算所述第一区域的希尔伯特编码,得到所述第一希尔伯特编码。
8.一种搜索装置,其特征在于,包括:
第一获取单元,用于获取用于表示第一区域的第一希尔伯特编码,其中,所述第一区域是第一终端所在的区域;
第一判断单元,用于判断是否获取到所述第一区域的地域信息;
第一匹配单元,用于在未获取到所述第一区域的地域信息的情况下,将所述第一希尔伯特编码依次与第一集合中每个元素的希尔伯特编码进行匹配,将匹配成功的元素构成的集合作为第二集合,其中,所述第一集合是预设范围的地域中第一类别的元素的集合,所述第一类别是待搜索的目标元素的类别;
第二获取单元,用于依次获取所述第一终端的地理位置与所述第二集合中每个元素的地理位置之间的距离;
第一确定单元,用于将最小的距离对应的元素作为所述目标元素;
第二匹配单元,用于在获取到所述第一区域的地域信息的情况下,将所述第一希尔伯特编码依次与第三集合中每个元素的希尔伯特编码进行匹配,将匹配成功的元素构成的集合作为第四集合,其中,所述第三集合是所述第一区域所处的地域中所述第一类别的元素的集合,所述预设范围的地域包括所述第一区域所处的地域;
第三获取单元,用于依次获取所述第一终端的地理位置与所述第四集合中每个元素的地理位置之间的距离;
第二确定单元,用于将最小的距离对应的元素作为所述目标元素。
9.根据权利要求8所述的装置,其特征在于,所述第一匹配单元包括:
第一赋值子单元,用于将1赋值给变量i,所述变量i为将两个希尔伯特编码进行匹配的前缀的位数;
第一循环子单元,用于重复执行以下步骤,直至匹配成功的元素的数量小于等于第一预设数量,其中,所述第一预设数量小于所述第一集合中元素的数量:
依次将所述第一集合中每一个元素的希尔伯特编码的前i位与所述第一希尔伯特编码的前i位进行匹配,得到所述第一集合中匹配成功的元素的数量;
判断匹配成功的元素的数量是否小于等于所述第一预设数量;
如果判断结果为否,将i+1的值赋给i。
10.根据权利要求8所述的装置,其特征在于,所述第二匹配单元包括:
第二赋值子单元,用于将1赋值给变量i,所述变量i为将两个希尔伯特编码进行匹配的前缀的位数;
第二循环子单元,用于重复执行以下步骤,直至匹配成功的元素的数量小于等于第一预设数量,其中,所述第一预设数量小于所述第一集合中元素的数量:
依次将所述第三集合中每一个元素的希尔伯特编码的前i位与所述第一希尔伯特编码的前i位进行匹配,得到所述第三集合中匹配成功的元素的数量;
判断匹配成功的元素的数量是否小于等于所述第一预设数量;
如果判断结果为否,将i+1的值赋给i。
11.根据权利要求9所述的装置,其特征在于,所述第一循环子单元包括:
比较模块,用于将第一元素的希尔伯特编码的前i位字符与所述第一希尔伯特编码的前i位字符一一进行比较,其中,所述第一元素是所述第一集合中的任意一个元素;
第一确定模块,用于如果所述第一元素的希尔伯特编码的前i位字符与所述第一希尔伯特编码的前i位字符相同,确定所述第一元素与所述第一区域匹配成功;
第二确定模块,用于如果所述第一元素的希尔伯特编码的前i位字符与所述第一希尔伯特编码的前i位字符不相同,确定所述第一元素与所述第一区域匹配失败。
12.根据权利要求8所述的装置,其特征在于,所述装置还包括:
关联单元,用于在将最小的距离对应的元素作为所述目标元素之后,将所述第一希尔伯特编码与所述目标元素进行关联,得到关联关系;
存储单元,用于存储所述关联关系,其中,所述关联关系用于提供给所述第一区域内的多个终端,以便所述多个终端根据所述关联关系确定所述目标元素。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括:
第二判断单元,用于在将所述第一希尔伯特编码依次与第一集合中每个元素的希尔伯特编码进行匹配之前,或者,在将所述第一希尔伯特编码依次与第三集合中每个元素的希尔伯特编码进行匹配之前,判断是否存储有所述关联关系;
第三确定单元,用于如果存储有所述关联关系,根据所述关联关系确定所述目标元素;
第四确定单元,用于如果未存储所述关联关系,则确定将所述第一希尔伯特编码依次与所述第一集合中每个元素的希尔伯特编码进行匹配。
14.根据权利要求8所述的装置,其特征在于,所述第一获取单元包括:
获取子单元,用于获取所述第一终端所在地理位置的经度信息和纬度信息;
确定子单元,用于根据所述经度信息和所述纬度信息确定所述第一区域;
计算子单元,用于计算所述第一区域的希尔伯特编码,得到所述第一希尔伯特编码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710054538.4A CN108345607B (zh) | 2017-01-22 | 2017-01-22 | 搜索方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710054538.4A CN108345607B (zh) | 2017-01-22 | 2017-01-22 | 搜索方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108345607A true CN108345607A (zh) | 2018-07-31 |
CN108345607B CN108345607B (zh) | 2022-09-13 |
Family
ID=62962942
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710054538.4A Active CN108345607B (zh) | 2017-01-22 | 2017-01-22 | 搜索方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108345607B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110457317A (zh) * | 2019-07-23 | 2019-11-15 | 昆明理工大学 | 一种基于状态视图的Hilbert曲线编码和解码方法 |
CN112069371A (zh) * | 2020-08-11 | 2020-12-11 | 中国水产科学研究院东海水产研究所 | 一种基于格网化邻域的海上船舶有效救援搜索方法 |
CN113760780A (zh) * | 2020-10-22 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 数据记录方法、装置、设备及介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101834861A (zh) * | 2010-04-16 | 2010-09-15 | 华中师范大学 | 位置服务中基于邻居节点转发查询的轨迹隐私保护方法 |
KR20100118905A (ko) * | 2009-04-29 | 2010-11-08 | 고려대학교 산학협력단 | 무선 방송 환경에서의 제한적 nn 질의 처리 장치 및 방법과 이를 이용한 제한적 nn 질의 처리 시스템 |
US8099380B1 (en) * | 2007-05-29 | 2012-01-17 | University Of Southern California | Blind evaluation of nearest neighbor queries wherein locations of users are transformed into a transformed space using a plurality of keys |
CN103810194A (zh) * | 2012-11-11 | 2014-05-21 | 刘龙 | 一种地理编码方法、位置查询系统及方法 |
CN103841512A (zh) * | 2012-11-26 | 2014-06-04 | 腾讯科技(深圳)有限公司 | 一种基于地理位置的搜索方法和系统 |
WO2015005017A1 (ja) * | 2013-07-12 | 2015-01-15 | 日本電気株式会社 | 多次元範囲検索装置及び多次元範囲検索方法 |
CN105843948A (zh) * | 2016-04-08 | 2016-08-10 | 南京大学 | 一种移动环境下基于索引技术的景点智能推荐方法 |
US20160306823A1 (en) * | 2015-04-20 | 2016-10-20 | Alibaba Group Holding Limited | Computerized system and method for performing a location-based search |
-
2017
- 2017-01-22 CN CN201710054538.4A patent/CN108345607B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8099380B1 (en) * | 2007-05-29 | 2012-01-17 | University Of Southern California | Blind evaluation of nearest neighbor queries wherein locations of users are transformed into a transformed space using a plurality of keys |
KR20100118905A (ko) * | 2009-04-29 | 2010-11-08 | 고려대학교 산학협력단 | 무선 방송 환경에서의 제한적 nn 질의 처리 장치 및 방법과 이를 이용한 제한적 nn 질의 처리 시스템 |
CN101834861A (zh) * | 2010-04-16 | 2010-09-15 | 华中师范大学 | 位置服务中基于邻居节点转发查询的轨迹隐私保护方法 |
CN103810194A (zh) * | 2012-11-11 | 2014-05-21 | 刘龙 | 一种地理编码方法、位置查询系统及方法 |
CN103841512A (zh) * | 2012-11-26 | 2014-06-04 | 腾讯科技(深圳)有限公司 | 一种基于地理位置的搜索方法和系统 |
WO2015005017A1 (ja) * | 2013-07-12 | 2015-01-15 | 日本電気株式会社 | 多次元範囲検索装置及び多次元範囲検索方法 |
US20160306823A1 (en) * | 2015-04-20 | 2016-10-20 | Alibaba Group Holding Limited | Computerized system and method for performing a location-based search |
CN106156195A (zh) * | 2015-04-20 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 基于位置信息的搜索方法及其系统 |
CN105843948A (zh) * | 2016-04-08 | 2016-08-10 | 南京大学 | 一种移动环境下基于索引技术的景点智能推荐方法 |
Non-Patent Citations (1)
Title |
---|
TIBOR VUKOVIC: "Hilbert-Geohash:Hashing Geographical Point Data Using the Hilbert Space-Filling Curve", 《HTTP://HDL.HANDLE.NET/11250/2404058》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110457317A (zh) * | 2019-07-23 | 2019-11-15 | 昆明理工大学 | 一种基于状态视图的Hilbert曲线编码和解码方法 |
CN110457317B (zh) * | 2019-07-23 | 2023-06-20 | 昆明理工大学 | 一种基于状态视图的Hilbert曲线编码和解码方法 |
CN112069371A (zh) * | 2020-08-11 | 2020-12-11 | 中国水产科学研究院东海水产研究所 | 一种基于格网化邻域的海上船舶有效救援搜索方法 |
CN113760780A (zh) * | 2020-10-22 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 数据记录方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108345607B (zh) | 2022-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7634465B2 (en) | Indexing and caching strategy for local queries | |
CN102254015B (zh) | 基于视觉词组的图像检索方法 | |
CN103026368B (zh) | 使用增量特征提取的对象辨识 | |
CN105574212B (zh) | 一种多索引磁盘哈希结构的图像检索方法 | |
CN101404032B (zh) | 一种基于内容的视频检索方法及系统 | |
CN108920720A (zh) | 基于深度哈希和gpu加速的大规模图像检索方法 | |
JP5911578B2 (ja) | 画像の特徴点位置情報を符号化する方法、コンピュータプログラム、モバイルデバイス | |
CN109960737B (zh) | 半监督深度对抗自编码哈希学习的遥感影像内容检索方法 | |
CN103582884A (zh) | 用于视觉搜索的稳健特征匹配 | |
JP6167767B2 (ja) | インデックス生成装置及び検索装置 | |
CN104143005A (zh) | 一种相关搜索系统及方法 | |
CN108345607A (zh) | 搜索方法和装置 | |
CN107341178A (zh) | 一种自适应的二进制量化哈希编码方法及装置 | |
CN105740428B (zh) | 一种基于b+树的高维磁盘索引结构和图像检索方法 | |
CN108446357A (zh) | 一种基于二维地理位置的海量数据空间范围查询方法 | |
CN107169372A (zh) | 基于Voronoi多边形与Hilbert曲线编码的隐私保护查询方法 | |
CN109885638B (zh) | 一种三维立体空间索引方法及系统 | |
CN114049463A (zh) | 一种二叉树的数据网格化、网格点数据的获取方法及装置 | |
CN112632406B (zh) | 查询方法、装置、电子设备及存储介质 | |
CN106484782B (zh) | 一种基于多核哈希学习的大规模医学图像检索方法 | |
CN107133348B (zh) | 大规模图片集中基于语义一致性的近似搜索方法 | |
CN105760442A (zh) | 基于数据库邻域关系的图像特征增强方法 | |
CN105302833A (zh) | 一种基于内容的视频检索数学模型建立方法 | |
Ge et al. | Impact of discretization methods on the rough set-based classification of remotely sensed images | |
Khot et al. | Road network compression techniques in spatiotemporal embedded systems: A survey |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |