首页 / 专利库 / 电脑零配件 / 笔记本电脑 / 基于位置的搜索结果缓存方法、搜索方法、客户端及系统

基于位置的搜索结果缓存方法、搜索方法、客户端及系统

阅读:0发布:2020-11-09

专利汇可以提供基于位置的搜索结果缓存方法、搜索方法、客户端及系统专利检索,专利查询,专利分析的服务。并且本 申请 公开了一种基于 位置 的搜索结果缓存方法,包括:获取根据用户设备发送的搜索 请求 进行搜索得到的搜索数据;从所述搜索数据中筛选出预先计算得到的动态缓存半径范围内的数据,所述动态缓存半径是根据所述用户设备的位置信息及离线数据计算得到的,并且所述计算发生在获取所述搜索数据之前或之后;缓存所述动态缓存半径范围内的数据,得到缓存结果;生成对应所述缓存结果的缓存关键字,所述对应所述缓存结果的缓存关键字至少包括根据所述动态缓存半径及所述用户设备的位置信息生成的字符串;关联所述缓存结果及所述缓存关键字。本申请还公开了一种基于位置的搜索方法、客户端及系统。利用本申请技术方案,可以使基于位置的搜索结果更精准,提升用户体验。,下面是基于位置的搜索结果缓存方法、搜索方法、客户端及系统专利的具体信息内容。

1.一种基于位置的搜索结果缓存方法,其特征在于,所述方法包括:
获取根据用户设备发送的搜索请求进行搜索得到的搜索数据;
从所述搜索数据中筛选出预先计算得到的动态缓存半径范围内的数据,所述动态缓存半径是根据所述用户设备的位置信息及离线数据计算得到的;
缓存所述动态缓存半径范围内的数据,得到缓存结果;
生成对应所述缓存结果的缓存关键字,所述对应所述缓存结果的缓存关键字至少包括根据所述动态缓存半径及所述用户设备的位置信息生成的字符串;
关联所述缓存结果及所述缓存关键字。
2.根据权利要求1所述的方法,其特征在于,所述离线数据是以设定大小的网格方式存储的,对应网格的缓存关键字至少包括根据所述网格的位置信息生成的字符串。
3.根据权利要求2所述的方法,其特征在于,根据所述用户设备的位置信息及离线数据计算动态缓存半径包括:
根据所述用户设备的位置信息查找离线数据,得到候选结果的总数;
根据所述候选结果的总数及需要向用户反馈的搜索结果总数计算候选结果的分布密度
根据所述候选结果的分布密度确定动态缓存半径。
4.一种基于位置的搜索方法,其特征在于,所述方法包括:
接收用户设备发送的搜索请求,并获取所述用户设备的位置信息;
根据所述用户设备的位置信息及离线数据确定动态缓存半径;
根据所述用户设备的位置信息及所述动态缓存半径查找本地缓存中是否有符合用户需求的缓存数据;
如果有,则将符合用户需求的缓存数据作为搜索结果返回给所述用户;
如果没有,则将所述搜索请求及所述用户设备的位置信息发送给搜索引擎
在接收到搜索引擎返回的搜索数据后,从所述搜索数据中筛选得到所述动态缓存半径范围内的数据;
将所述动态缓存半径范围内的数据作为搜索结果返回给所述用户,并缓存所述搜索结果,生成对应所述搜索结果的缓存关键字,所述对应所述搜索结果的缓存关键字至少包括根据所述动态缓存半径及所述用户设备的位置信息生成的字符串。
5.根据权利要求4所述的方法,其特征在于,所述根据所述用户设备的位置信息及离线数据确定动态缓存半径包括:
根据所述用户设备的位置信息查找离线数据,得到候选结果的总数;
根据所述候选结果的总数及需要向用户反馈的搜索结果总数计算候选结果的分布密度;
根据所述候选结果的分布密度确定动态缓存半径。
6.根据权利要求4所述的方法,其特征在于,所述根据所述用户的位置信息及所述动态缓存半径查找本地缓存中是否有符合用户需求的缓存数据包括:
根据所述动态缓存半径及所述用户设备的位置信息生成搜索关键字;
根据所述搜索关键字查找本地缓存;
如果有命中的缓存数据,则将命中的缓存数据作为符合用户需求的缓存数据;
否则,确定本地缓存中没有符合用户需求的缓存数据。
7.一种基于位置的搜索客户端,其特征在于,所述客户端包括:用户交互接口、计算单元、缓存数据查找单元、服务交互单元、以及缓存处理单元;
所述用户交互接口,用于接收用户设备发送的搜索请求,并获取所述用户设备的位置信息;
所述计算单元,用于根据所述用户设备的位置信息及离线数据确定动态缓存半径;
所述缓存数据查找单元,用于根据所述用户设备的位置信息及所述动态缓存半径查找本地缓存中是否有符合用户需求的缓存数据;如果有,则将符合用户需求的缓存数据作为搜索结果传送给所述用户交互接口;如果没有,则触发所述服务交互接口与搜索引擎交互;
所述服务交互接口,用于根据所述缓存数据查找单元的触发,向所述搜索引擎发送所述搜索请求及所述用户设备的位置信息,并接收搜索引擎返回的搜索数据;
所述缓存处理单元,用于从所述搜索数据中筛选得到所述动态缓存半径范围内的数据,将所述动态缓存半径范围内的数据作为搜索结果传送给所述用户交互接口,并缓存所述搜索结果,根据所述用户设备的位置信息及所述动态缓存半径生成对应所述搜索结果的缓存关键字;
所述用户交互接口,还用于将所述搜索结果返回给所述用户。
8.根据权利要求7所述的客户端,其特征在于,所述计算单元按以下方式确定动态缓存半径:根据所述用户设备的位置信息查找离线数据,得到候选结果的总数;根据所述候选结果的总数及需要向用户反馈的搜索结果总数计算候选结果的分布密度;根据所述候选结果的分布密度确定动态缓存半径。
9.一种基于位置的搜索系统,其特征在于,包括:搜索引擎、离线数据存储模、缓存模块、以及权利要求7或8所述的客户端;其中,所述离线数据存储模块用于存储离线数据;搜索引擎用于根据客户端发送的搜索请求及用户设备的位置信息进行搜索,并将搜索数据返回给所述客户端;所述缓存模块用于缓存搜索结果。
10.根据权利要求9所述的搜索系统,其特征在于,所述客户端安装在所述用户设备上,所述用户设备为以下任意一种或多种:移动终端、台式电脑、笔记本电脑、IPAD。

说明书全文

基于位置的搜索结果缓存方法、搜索方法、客户端及系统

技术领域

[0001] 本申请涉及网格缓存技术,具体涉及一种基于位置的搜索结果缓存方法。本申请同时还涉及一种基于位置的搜索方法、客户端及系统。

背景技术

[0002] 近年来,智能便携终端的普及使得针对移动的人和物的位置信息的采集变得容易,继而出现了很多面向位置的搜索需求,例如,基于手机客户端的一些应用软件,通常会提供搜索周边的酒店、餐馆、店铺等功能。
[0003] 在基于位置的搜索中,通常的解决方案是通过搜索引擎直接按照用户当前的经纬度,计算得到用户与候选对象之间的距离,如果该距离在设定的范围内,,则将该候选对象作为搜索结果返回给用户。这种搜索方式在流量上涨或者是活动期间,大量高并发的请求会对搜索引擎造成巨大压,甚至会导致搜索引擎瘫痪。为此,现有技术中通常采用基于网格的缓存方式来缓解搜索引擎的压力,其基本原理如下:对位置进行网格化编码,对编码建立索引,比如根据用户当前的经纬度,通过GeoHash算法将一定大小的空间计算为字符串值作为缓存关键字;根据缓存关键字找出搜索范围内所有网格内的对象。这样,由于在一定经纬度范围内的用户对应的网格数据是相同的,因此将这些数据缓存,可以有效减少对搜索引擎的请求次数,减轻搜索引擎的负荷。
[0004] 在现有技术中,由于网格的大小通常都是固定的,这样在用户所处位置周边候选对象密集的情况下,网格缓存的对象会很多,从而提供给用户的搜索结果也会很多;而在用户所处位置周边候选对象稀疏的情况下,网格缓存的对象很少,提供给用户的搜索结果也会很少,这种情况会影响用户体验。比如,设置默认的网格大小为0.6平方公里的网格,而用户所处位置500米左右店铺数量约为200家,缓存的店铺范围过大,无法向用户提供更精确的店铺信息。而用户所处位置1公里内店铺数量只有20家,缓存的店铺范围会过小,导致召回的店铺数量不够,无法满足用户的需求。发明内容
[0005] 本申请一方面提供一种基于位置的搜索结果缓存方法,以解决现有基于位置的服务应用中缓存结果精准度低、影响用户体验的问题。
[0006] 本申请另一方面不提供一种基于位置的搜索方法、客户端及系统,以解决现有基于位置的搜索中搜索引擎负荷重、搜索结果精准度低的问题。
[0007] 为此,本申请提供如下技术方案:
[0008] 一种基于位置的搜索结果缓存方法,所述方法包括:
[0009] 获取根据用户设备发送的搜索请求进行搜索得到的搜索数据;
[0010] 从所述搜索数据中筛选出预先计算得到的动态缓存半径范围内的数据,所述动态缓存半径是根据所述用户设备的位置信息及离线数据计算得到的;
[0011] 缓存所述动态缓存半径范围内的数据,得到缓存结果;
[0012] 生成对应所述缓存结果的缓存关键字,所述对应所述缓存结果的缓存关键字至少包括根据所述动态缓存半径及所述用户设备的位置信息生成的字符串;
[0013] 关联所述缓存结果及所述缓存关键字。
[0014] 可选地,所述离线数据是以设定大小的网格方式存储的,对应网格的缓存关键字至少包括根据所述网格的位置信息生成的字符串。
[0015] 可选地,根据所述用户设备的位置信息及离线数据计算动态缓存半径包括:
[0016] 根据所述用户设备的位置信息查找离线数据,得到候选结果的总数;
[0017] 根据所述候选结果的总数及需要向用户反馈的搜索结果总数计算候选结果的分布密度
[0018] 根据所述候选结果的分布密度确定动态缓存半径。
[0019] 可选地,所述候选结果为距离所述用户在设定范围内的网格存储对象。
[0020] 可选地,按以下公式计算动态缓存半径: 其中,R为动态缓存半径,E为候选结果的分布密度,C为所述候选结果的分布区域面积。
[0021] 可选地,所述对应网格的缓存关键字还包括用于表示网格存储对象类别的关键字;所述对应所述缓存结果的缓存关键字还包括用于表示用户搜索对象类别的关键字,所述用于表示用户搜索对象类别的关键字包含在所述搜索请求中。
[0022] 一种基于位置的搜索方法,所述方法包括:
[0023] 接收用户设备发送的搜索请求,并获取所述用户设备的位置信息;
[0024] 根据所述用户设备的位置信息及离线数据确定动态缓存半径;
[0025] 根据所述用户设备的位置信息及所述动态缓存半径查找本地缓存中是否有符合用户需求的缓存数据;
[0026] 如果有,则将符合用户需求的缓存数据作为搜索结果返回给所述用户;
[0027] 如果没有,则将所述搜索请求及所述用户设备的位置信息发送给搜索引擎;
[0028] 在接收到搜索引擎返回的搜索数据后,从所述搜索数据中筛选得到所述动态缓存半径范围内的数据;
[0029] 将所述动态缓存半径范围内的数据作为搜索结果返回给所述用户,并缓存所述搜索结果,生成对应所述搜索结果的缓存关键字,所述对应所述搜索结果的缓存关键字至少包括根据所述动态缓存半径及所述用户设备的位置信息生成的字符串。
[0030] 可选地,所述离线数据是以设定大小的网格方式存储的,对应网格的关键字至少包括根据所述网格的位置信息生成的字符串。
[0031] 可选地,所述根据所述用户设备的位置信息及离线数据确定动态缓存半径包括:
[0032] 根据所述用户设备的位置信息查找离线数据,得到候选结果的总数;
[0033] 根据所述候选结果的总数及需要向用户反馈的搜索结果总数计算候选结果的分布密度;
[0034] 根据所述候选结果的分布密度确定动态缓存半径。
[0035] 可选地,所述候选结果为距离所述用户在设定范围内的搜索对象。
[0036] 可选地,按以下公式计算动态缓存半径: 其中,R为动态缓存半径,E为候选结果的分布密度,C为所述候选结果的分布区域面积。
[0037] 可选地,所述根据所述用户的位置信息及所述动态缓存半径查找本地缓存中是否有符合用户需求的缓存数据包括:
[0038] 根据所述动态缓存半径及所述用户设备的位置信息生成搜索关键字;
[0039] 根据所述搜索关键字查找本地缓存;
[0040] 如果有命中的缓存数据,则将命中的缓存数据作为符合用户需求的缓存数据;
[0041] 否则,确定本地缓存中没有符合用户需求的缓存数据。
[0042] 可选地,所述对应网格的缓存关键字还包括用于表示网格存储对象类别的关键字;所述对应所述搜索结果的缓存关键字还包括用于表示用户搜索对象类别的关键字,所述用于表示用户搜索对象类别的关键字包含在所述搜索请求中。
[0043] 可选地,所述用户设备为以下任意一种或多种:移动终端、台式电脑、笔记本电脑、IPAD。
[0044] 一种基于位置的搜索客户端,所述客户端包括:用户交互接口、计算单元、缓存数据查找单元、服务交互单元、以及缓存处理单元;
[0045] 所述用户交互接口,用于接收用户设备发送的搜索请求,并获取所述用户设备的位置信息;
[0046] 所述计算单元,用于根据所述用户设备的位置信息及离线数据确定动态缓存半径;
[0047] 所述缓存数据查找单元,用于根据所述用户设备的位置信息及所述动态缓存半径查找本地缓存中是否有符合用户需求的缓存数据;如果有,则将符合用户需求的缓存数据作为搜索结果传送给所述用户交互接口;如果没有,则触发所述服务交互接口与搜索引擎交互;
[0048] 所述服务交互接口,用于根据所述缓存数据查找单元的触发,向所述搜索引擎发送所述搜索请求及所述用户设备的位置信息,并接收搜索引擎返回的搜索数据;
[0049] 所述缓存处理单元,用于从所述搜索数据中筛选得到所述动态缓存半径范围内的数据,将所述动态缓存半径范围内的数据作为搜索结果传送给所述用户交互接口,并缓存所述搜索结果,根据所述用户设备的位置信息及所述动态缓存半径生成对应所述搜索结果的缓存关键字;
[0050] 所述用户交互接口,还用于将所述搜索结果返回给所述用户。
[0051] 可选地,所述离线数据是以设定大小的网格方式存储的,对应网格的缓存关键字至少包括根据所述网格的位置信息生成的字符串。
[0052] 可选地,所述计算单元按以下方式确定动态缓存半径:根据所述用户设备的位置信息查找离线数据,得到候选结果的总数;根据所述候选结果的总数及需要向用户反馈的搜索结果总数计算候选结果的分布密度;根据所述候选结果的分布密度确定动态缓存半径。
[0053] 可选地,所述缓存数据查找单元按以下方式查找本地缓存中是否有符合用户需求的缓存数据包括:
[0054] 根据所述动态缓存半径及所述用户设备的位置信息生成搜索关键字;根据所述搜索关键字查找本地缓存;如果有命中的缓存数据,则将命中的缓存数据作为符合用户需求的缓存数据;否则,确定本地缓存中没有符合用户需求的缓存数据。
[0055] 可选地,所述对应网格的缓存关键字还包括用于表示网格存储对象类别的关键字;所述对应所述搜索结果的缓存关键字还包括用于表示用户搜索对象类别的关键字,所述用于表示用户搜索对象类别的关键字包含在所述搜索请求中。
[0056] 一种基于位置的搜索系统,包括:搜索引擎、离线数据存储模、缓存模块、以及权利要求15至19任一项所述的客户端;其中,所述离线数据存储模块用于存储离线数据;搜索引擎用于根据客户端发送的搜索请求及用户设备的位置信息进行搜索,并将搜索数据返回给所述客户端;所述缓存模块用于缓存搜索结果。
[0057] 可选地,所述客户端安装在所述用户设备上,所述用户设备为以下任意一种或多种:移动终端、台式电脑、笔记本电脑、IPAD。
[0058] 可选地,所述用户设备具有显示屏;
[0059] 所述客户端还包括:
[0060] 搜索结果处理单元,用于将所述搜索结果的内容展现在所述显示屏上。
[0061] 一种可读存储介质,其上存储有指令,所述指令被执行以用于:
[0062] 获取根据用户设备发送的搜索请求进行搜索得到的搜索数据;
[0063] 从所述搜索数据中筛选出预先计算得到的动态缓存半径范围内的数据,所述动态缓存半径是根据所述用户设备的位置信息及离线数据计算得到的;
[0064] 缓存所述动态缓存半径范围内的数据,得到缓存结果;
[0065] 生成对应所述缓存结果的缓存关键字,所述对应所述缓存结果的缓存关键字至少包括根据所述动态缓存半径及所述用户设备的位置信息生成的字符串;
[0066] 关联所述缓存结果及所述缓存关键字。
[0067] 一种电子设备,包括:存储器和处理器;
[0068] 所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:
[0069] 获取根据用户设备发送的搜索请求进行搜索得到的搜索数据;
[0070] 从所述搜索数据中筛选出预先计算得到的动态缓存半径范围内的数据,所述动态缓存半径是根据所述用户设备的位置信息及离线数据计算得到的;
[0071] 缓存所述动态缓存半径范围内的数据,得到缓存结果;
[0072] 生成对应所述缓存结果的缓存关键字,所述对应所述缓存结果的缓存关键字至少包括根据所述动态缓存半径及所述用户设备的位置信息生成的字符串;
[0073] 关联所述缓存结果及所述缓存关键字。
[0074] 一种可读存储介质,其上存储有指令,所述指令被执行以用于:
[0075] 接收用户设备发送的搜索请求,并获取所述用户设备的位置信息;
[0076] 根据所述用户设备的位置信息及离线数据确定动态缓存半径;
[0077] 根据所述用户设备的位置信息及所述动态缓存半径查找本地缓存中是否有符合用户需求的缓存数据;
[0078] 如果有,则将符合用户需求的缓存数据作为搜索结果返回给所述用户;
[0079] 如果没有,则将所述搜索请求及所述用户设备的位置信息发送给搜索引擎;
[0080] 在接收到搜索引擎返回的搜索数据后,从所述搜索数据中筛选得到所述动态缓存半径范围内的数据;
[0081] 将所述动态缓存半径范围内的数据作为搜索结果返回给所述用户,并缓存所述搜索结果,生成对应所述搜索结果的缓存关键字,所述对应所述搜索结果的缓存关键字至少包括根据所述动态缓存半径及所述用户设备的位置信息生成的字符串。
[0082] 一种电子设备,包括:存储器和处理器;
[0083] 所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:
[0084] 接收用户设备发送的搜索请求,并获取所述用户设备的位置信息;
[0085] 根据所述用户设备的位置信息及离线数据确定动态缓存半径;
[0086] 根据所述用户设备的位置信息及所述动态缓存半径查找本地缓存中是否有符合用户需求的缓存数据;
[0087] 如果有,则将符合用户需求的缓存数据作为搜索结果返回给所述用户;
[0088] 如果没有,则将所述搜索请求及所述用户设备的位置信息发送给搜索引擎;
[0089] 在接收到搜索引擎返回的搜索数据后,从所述搜索数据中筛选得到所述动态缓存半径范围内的数据;
[0090] 将所述动态缓存半径范围内的数据作为搜索结果返回给所述用户,并缓存所述搜索结果,生成对应所述搜索结果的缓存关键字,所述对应所述搜索结果的缓存关键字至少包括根据所述动态缓存半径及所述用户设备的位置信息生成的字符串。
[0091] 与现有技术相比,本申请具有以下优点:
[0092] 本申请提供的基于位置的搜索结果缓存方法,在搜索得到搜索数据后,从所述搜索数据中筛选出预先计算得到的动态缓存半径范围内的数据,由于所述动态缓存半径是基于用户设备的位置信息及离线数据计算得到的,因此通过该动态缓存半径较好地调节了缓存数据的数量,使缓存的数据能够与用户所处位置更接近,进而可以基于缓存数据得到更精准的搜索结果,提升用户体验。
[0093] 进一步地,基于这种搜索结果缓存方式,在接收用户设备发送的搜索请求后,先根据用户设备的位置信息及离线数据确定动态缓存半径,再根据所述用户设备的位置信息及所述动态缓存半径查找本地缓存中是否有符合用户需求的缓存数据;如果有即可从缓存数据中得到搜索结果,不仅有效地减轻了搜索引擎的负荷,而且可以向用户返回更精准的搜索结果,提升用户体验。附图说明
[0094] 图1是本申请提供的基于位置的搜索结果缓存方法实施例流程图
[0095] 图2是本申请提供的基于位置的搜索方法中动态缓存半径的调整示意图;
[0096] 图3是本申请提供的基于位置的搜索方法的实施例的流程图;
[0097] 图4是本申请提供的基于位置的搜索客户端的结构示意图;
[0098] 图5是本申请提供的基于位置的搜索系统中不同模块之间的交互流程图。

具体实施方式

[0099] 在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
[0100] 如图1所示,是本申请提供的基于位置的搜索结果缓存方法实施例的流程图,包括以下步骤:
[0101] 步骤101,获取根据用户设备发送的搜索请求进行搜索得到的搜索数据。
[0102] 所述搜索请求可以是针对用户周边特定类型对象的搜索请求,比如所述对象为购物、或餐饮、或娱乐等类型的店铺。
[0103] 对于特定的搜索服务,所述搜索请求中可以不包含业务类型信息,对于综合性的搜索服务,所述搜索请求中则需要包含业务类型信息,为了描述方便,将其称为业务ID,比如对于同时提供购物、餐饮、娱乐等多种类型的搜索服务,需要用户选择相应的业务类型,比如在该搜索服务的界面提供相应的业务类型选择框供用户选择,也可以由用户在搜索框中直接输入该业务类型的描述信息或关键字,对此本申请实施例不做限定。
[0104] 根据搜索请求进行的搜索可以采用现有基于位置的搜索技术,比如搜索用户周边设置范围内的餐馆,该设定范围可以是应用系统的默认值,也可以是由用户设定的,如果由用户设定,则该设定范围可以包含在所述搜索请求中。
[0105] 步骤102,从所述搜索数据中筛选出预先计算得到的动态缓存半径范围内的数据,所述动态缓存半径是根据所述用户设备的位置信息及离线数据计算得到的。
[0106] 需要说明的是,所述动态缓存半径的计算可以是在获取所述搜索数据之前或之后完成的。
[0107] 动态缓存半径的确定过程如下:首先根据所述用户设备的位置信息查找离线数据,得到候选结果的总数,然后根据所述候选结果的总数及需要向用户反馈的搜索结果总数计算候选结果的分布密度,最后根据所述候选结果的分布密度确定动态缓存半径。
[0108] 在具体应用中,所述用户设备比如可以是智能手机、台式电脑、笔记本电脑、IPAD等设备。对于智能手机,其本身具有定位功能,对于台式电脑等本身不具有定位功能的用户设备,也可以借助于现有技术中的相应软硬件工具得到其位置信息。
[0109] 所述离线数据可以采用基于设定大小的网格方式存储,所述网格的形状可以是多边形、矩形、圆形等,只是不同形状的网格搜索中的复杂度及精准度不同,每个网格对应一个关键字,该关键字可以根据网格的位置信息生成,比如基于网格的中心坐标生成一个字符串,将该字符串作为对应该网格的关键字。相应地,在查找离线数据时,可以根据用户设备的位置信息按照设定的算法生成搜索关键字,将该搜索关键字与对应所述网格的关键字进行匹配,根据匹配结果得到相应网格中的数据,将这些数据作为候选结果,进而得到候选结果的总数。关键字的具体匹配方法可以采用现有技术,本申请不做限定。
[0110] 所述候选结果的分布密度可以按照下述公式计算:
[0111] E=M/N  (1)
[0112] 其中,E表示候选结果的分布密度,M表示候选结果总数,N表示需要向用户反馈的搜索结果总数。所述需要向用户反馈的搜索结果总数可以由应用系统设定,也可以由用户设定,对此本申请实施例不做限定。
[0113] 如图2所示,用户请求召回用户周边的店铺,假设用户周边的店铺都是均匀分布的,所述动态缓存半径可以按照以下公式计算:
[0114]
[0115] 其中,R表示动态缓存半径,C为所述候选结果分布区域的面积。
[0116] 可见,当用户周边的店铺数量较为密集的时候,候选结果的分布密度会相对变大,则动态缓存半径R会相对缩小;而当用户周边的店铺较为稀疏的时候,候选结果的分布密度会相对变小,则动态缓存半径R会相对扩大。
[0117] 当然,所述动态缓存半径的计算也可以采用其它公式,对此本申请实施例不做限定。
[0118] 从所述搜索数据中筛选出所述动态缓存半径范围内的数据具体可以按照以下方式完成:
[0119] 根据与网格对应的关键字确定该网格的位置,计算该网格与用户设备的距离,如果该距离小于所述动态缓存半径,则确定该网格中的数据在所述动态缓存半径范围内,提取出这些数据。
[0120] 步骤103,缓存所述动态缓存半径范围内的数据,得到缓存结果。
[0121] 步骤104,生成对应所述缓存结果的缓存关键字,所述对应所述缓存结果的缓存关键字至少包括根据所述动态缓存半径及所述用户设备的位置信息生成的字符串。
[0122] 比如,所述缓存关键字可以采用以下格式:动态缓存半径+网格缓存关键字,所述网格缓存关键字可以是基于现有算法比如GeoHash计算得到的字符串。
[0123] 步骤105,关联所述缓存结果及所述缓存关键字。
[0124] 将缓存关键字与缓存结果关联起来,以备后续搜索使用。
[0125] 前面提到,对应网格的缓存关键字至少包括根据所述网格的位置信息生成的字符串,进一步地,所述对应网格的缓存关键字还可包括用于表示网格存储对象类别的关键字,相应地,对应所述缓存结果的缓存关键字还可包括用于表示用户搜索对象类别的关键字,其格式可以为:业务ID+动态缓存半径+网格缓存关键字。这样,可以同时缓存针对不同业务的基于动态缓存半径的搜索结果。所述用于表示用户搜索对象类别的关键字可以包含在所述搜索请求中。
[0126] 本申请提供的基于位置的搜索结果缓存方法,在搜索得到搜索数据后,从所述搜索数据中筛选出预先计算得到的动态缓存半径范围内的数据,由于所述动态缓存半径是基于用户设备的位置信息及离线数据计算得到的,因此通过该动态缓存半径的调整,较好地调节了缓存数据的数量,使缓存的数据能够与用户所处位置更接近,进而可以基于缓存数据得到更精准的搜索结果,提升用户体验。
[0127] 相应地,本申请还提供一种可读存储介质,其上存储有指令,所述指令被执行以用于:
[0128] 获取根据用户设备发送的搜索请求进行搜索得到的搜索数据;
[0129] 从所述搜索数据中筛选出预先计算得到的动态缓存半径范围内的数据,所述动态缓存半径是根据所述用户设备的位置信息及离线数据计算得到的;
[0130] 缓存所述动态缓存半径范围内的数据,得到缓存结果;
[0131] 生成对应所述缓存结果的缓存关键字,所述对应所述缓存结果的缓存关键字至少包括根据所述动态缓存半径及所述用户设备的位置信息生成的字符串;
[0132] 关联所述缓存结果及所述缓存关键字。
[0133] 相应地,本申请还提供一种电子设备,包括:存储器和处理器;
[0134] 所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:
[0135] 获取根据用户设备发送的搜索请求进行搜索得到的搜索数据;
[0136] 从所述搜索数据中筛选出预先计算得到的动态缓存半径范围内的数据,所述动态缓存半径是根据所述用户设备的位置信息及离线数据计算得到的;
[0137] 缓存所述动态缓存半径范围内的数据,得到缓存结果;
[0138] 生成对应所述缓存结果的缓存关键字,所述对应所述缓存结果的缓存关键字至少包括根据所述动态缓存半径及所述用户设备的位置信息生成的字符串;
[0139] 关联所述缓存结果及所述缓存关键字。
[0140] 如图3所示,是本申请提供的基于位置的搜索方法的流程图,包括以下步骤:
[0141] 步骤301,接收用户设备发送的搜索请求,并获取所述用户设备的位置信息。
[0142] 所述用户设备比如可以是智能手机、台式电脑、笔记本电脑、IPAD等设备。对于智能手机,其本身具有定位功能,对于台式电脑等本身不具有定位功能的用户设备,也可以借助于现有技术中的相应软硬件工具得到其位置信息。
[0143] 所述搜索请求可以是针对用户周边特定类型对象的搜索请求,比如所述对象为购物、或餐饮、或娱乐等类型的店铺。在所述搜索请求中可以包含业务ID、当然根据搜索需求的不同,所述搜索请求中还可进一步包含与搜索对象相关的其它信息,比如用户需要搜索周边的酒店,同时对酒店的星级提出要求,要求四星以上。
[0144] 步骤302,根据所述用户设备的位置信息及离线数据确定动态缓存半径。
[0145] 所述离线数据可以采用基于设定大小的网格方式存储,所述网格的形状可以是多边形、矩形、圆形等,只是不同形状的网格搜索中的复杂度及精准度不同,每个网格对应一个关键字,所述关键字至少包括根据所述网格的位置信息生成的字符串。
[0146] 所述动态缓存半径的计算在前面已有详细说明,在此不再赘述。
[0147] 步骤303,根据所述用户设备的位置信息及所述动态缓存半径查找本地缓存中是否有符合用户需求的缓存数据;如果有,则执行步骤304;否则,执行步骤305。
[0148] 需要说明的是,本地缓存中保存的缓存数据是基于每次通过搜索引擎搜索得到的搜索数据,并根据相应的动态缓存半径筛选出的搜索结果而缓存的数据,所述缓存数据的缓存关键字至少包括根据相应的动态缓存半径及用户设备的位置信息生成的字符串。因此,在查找本地缓存中是否有符合用户需求的缓存数据时,首先根据步骤302计算得到的动态缓存半径及所述用户设备的位置信息生成搜索关键字,根据该搜索关键字查找本地缓存,即将该搜索关键字与本地缓存中的缓存关键字进行匹配;如果有命中的缓存数据,则将命中的缓存数据作为符合用户需求的缓存数据;否则,确定本地缓存中没有符合用户需求的缓存数据。
[0149] 步骤304,将符合用户需求的缓存数据作为搜索结果返回给所述用户。
[0150] 步骤305,将所述搜索请求及所述用户设备的位置信息发送给搜索引擎。
[0151] 在本地缓存中没有相应的缓存数据的情况下,借助搜索引擎,由搜索引擎根据所述搜索请求及用户设备的位置信息进行搜索,具体可以采用现有技术。
[0152] 步骤306,在接收到搜索引擎返回的搜索数据后,从所述搜索数据中筛选得到所述动态缓存半径范围内的数据。
[0153] 具体地,可以根据与网格对应的关键字确定该网格的位置,计算该网格与用户设备的距离,如果该距离小于所述动态缓存半径,则确定该网格中的数据在所述动态缓存半径范围内,提取出这些数据。
[0154] 步骤307,将所述动态缓存半径范围内的数据作为搜索结果返回给所述用户,并缓存所述搜索结果,生成对应所述搜索结果的缓存关键字,所述对应所述搜索结果的缓存关键字至少包括根据所述动态缓存半径及所述用户设备的位置信息生成的字符串。
[0155] 所述缓存关键字可以采用以下格式:动态缓存半径+网格缓存关键字,所述网格缓存关键字可以是基于现有算法比如GeoHash计算得到的字符串,进一步,所述网络缓存关键字还可以包括业务ID,其格式可以为:业务ID+动态缓存半径+网格缓存关键字。
[0156] 当然,还需要关联所述搜索结果及所述缓存关键字,以便后续对本地缓存数据的查找。
[0157] 本申请提供的基于位置的搜索方法,在接收用户设备发送的搜索请求后,先根据用户设备的位置信息及离线数据确定动态缓存半径,再根据所述用户设备的位置信息及所述动态缓存半径查找本地缓存中是否有符合用户需求的缓存数据;如果有即可从缓存数据中得到搜索结果,如果没有,再向搜索引擎发出搜索请求,对搜索引擎返回的搜索数据,筛选出所述动态缓存半径内的数据进行缓存,基于该动态缓存半径的调整,保证了各用户得到的搜索结果都是距离当前用户较近、分布较为均匀的缓存结果。
[0158] 可见,本申请提供的基于位置的搜索方法,不仅有效地减轻了搜索引擎的负荷,而且可以向用户返回更精准的搜索结果,提升用户体验。
[0159] 相应地,本申请还提供一种可读存储介质,其上存储有指令,所述指令被执行以用于:
[0160] 接收用户设备发送的搜索请求,并获取所述用户设备的位置信息;
[0161] 根据所述用户设备的位置信息及离线数据确定动态缓存半径;
[0162] 根据所述用户设备的位置信息及所述动态缓存半径查找本地缓存中是否有符合用户需求的缓存数据;
[0163] 如果有,则将符合用户需求的缓存数据作为搜索结果返回给所述用户;
[0164] 如果没有,则将所述搜索请求及所述用户设备的位置信息发送给搜索引擎;
[0165] 在接收到搜索引擎返回的搜索数据后,从所述搜索数据中筛选得到所述动态缓存半径范围内的数据;
[0166] 将所述动态缓存半径范围内的数据作为搜索结果返回给所述用户,并缓存所述搜索结果,生成对应所述搜索结果的缓存关键字,所述对应所述搜索结果的缓存关键字至少包括根据所述动态缓存半径及所述用户设备的位置信息生成的字符串。
[0167] 相应地,本申请还提供一种电子设备,包括:存储器和处理器;
[0168] 所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:
[0169] 接收用户设备发送的搜索请求,并获取所述用户设备的位置信息;
[0170] 根据所述用户设备的位置信息及离线数据确定动态缓存半径;
[0171] 根据所述用户设备的位置信息及所述动态缓存半径查找本地缓存中是否有符合用户需求的缓存数据;
[0172] 如果有,则将符合用户需求的缓存数据作为搜索结果返回给所述用户;
[0173] 如果没有,则将所述搜索请求及所述用户设备的位置信息发送给搜索引擎;
[0174] 在接收到搜索引擎返回的搜索数据后,从所述搜索数据中筛选得到所述动态缓存半径范围内的数据;
[0175] 将所述动态缓存半径范围内的数据作为搜索结果返回给所述用户,并缓存所述搜索结果,生成对应所述搜索结果的缓存关键字,所述对应所述搜索结果的缓存关键字至少包括根据所述动态缓存半径及所述用户设备的位置信息生成的字符串。
[0176] 本申请还提供一种基于位置的搜索客户端,如图4所示,是该搜索客户端的结构示意图。
[0177] 在该实施例中,所述搜索客户端包括:用户交互接口401、计算单元402、缓存数据查找单元403、服务交互单元404、以及缓存处理单元405。其中:
[0178] 所述用户交互接口401用于接收用户设备发送的搜索请求,并获取所述用户设备的位置信息;
[0179] 所述计算单元402用于根据所述用户设备的位置信息及离线数据确定动态缓存半径;
[0180] 所述缓存数据查找单元403用于根据所述用户设备的位置信息及所述动态缓存半径查找本地缓存中是否有符合用户需求的缓存数据;如果有,则将符合用户需求的缓存数据作为搜索结果传送给所述用户交互接口401;如果没有,则触发所述服务交互接口404与搜索引擎交互;
[0181] 所述服务交互接口404用于根据所述缓存数据查找单元的触发,向所述搜索引擎发送所述搜索请求及所述用户设备的位置信息,并接收搜索引擎返回的搜索数据;
[0182] 所述缓存处理单元405用于从所述搜索数据中筛选得到所述动态缓存半径范围内的数据,将所述动态缓存半径范围内的数据作为搜索结果传送给所述用户交互接口,并缓存所述搜索结果,根据所述用户设备的位置信息及所述动态缓存半径生成对应所述搜索结果的缓存关键字;
[0183] 相应地,所述用户交互接口401还用于将所述搜索结果返回给所述用户,比如,将所述搜索结果发送给所述用户设备,所述用户设备在显示屏上展现所述搜索结果。所述搜索结果的内容可以包括:特定对象的接口信息以及用户点击所述图形接口使所述用户设备导航至所述特定对象的附加内容等,所述接口信息的展现方式可以是列表、图标等。
[0184] 所述离线数据是以设定大小的网格方式存储的,对应网格的缓存关键字至少包括根据所述网格的位置信息生成的字符串。
[0185] 在该实施例中,所述离线数据是以设定大小的网格方式存储的,对应网格的缓存关键字至少包括根据所述网格的位置信息生成的字符串,还可进一步包括用于表示网格存储对象类别的关键字。
[0186] 相应地,所述计算单元402可以按以下方式确定动态缓存半径:根据所述用户设备的位置信息查找离线数据,得到候选结果的总数;根据所述候选结果的总数及需要向用户反馈的搜索结果总数计算候选结果的分布密度;根据所述候选结果的分布密度确定动态缓存半径,具体计算方式可以参照前面本申请基于位置的搜索方法实施例中的描述,在此不再赘述。
[0187] 所述缓存数据查找单元403在查找本地缓存中是否有符合用户需求的缓存数据时,可以先根据所述动态缓存半径及所述用户设备的位置信息生成搜索关键字;然后根据所述搜索关键字查找本地缓存;如果有命中的缓存数据,则将命中的缓存数据作为符合用户需求的缓存数据;否则,确定本地缓存中没有符合用户需求的缓存数据。
[0188] 需要说明的是,在实际应用中,对应所述搜索结果的缓存关键字至少包括根据所述动态缓存半径及所述用户设备的位置信息生成的字符串,进一步还可包括用于表示用户搜索对象类别的关键字。
[0189] 上述用于表示用户搜索对象类别的关键字可以包含在所述用户交互接口301接收到的搜索请求中。
[0190] 利用本申请提供的基于位置的搜索客户端,不仅可以有效地减轻搜索引擎的负荷,而且可以向用户返回更精准的搜索结果,提升用户体验。
[0191] 相应地,本申请还提供一种基于位置的搜索系统,包括:搜索引擎、离线数据存储模块、缓存模块、以及前面所述的客户端;其中,所述离线数据存储模块用于存储离线数据;搜索引擎用于根据客户端发送的搜索请求及用户设备的位置信息进行搜索,并将搜索数据返回给所述客户端;所述缓存模块用于缓存搜索结果。
[0192] 图5示出了本申请提供的基于位置的搜索系统中不同模块之间的交互流程,具体过程如下:
[0193] 1.用户访问APP,向客户端发送搜索请求;
[0194] 2.客户端接收到用户发送的搜索请求后,获取用户的位置信息,进行离线数据清洗,即从离线数据存储模块中查找以网格方式存储的离线数据,得到候选结果的总数,根据所述候选结果的总数及需要向用户反馈的搜索结果总数计算候选结果的分布密度,根据所述候选结果的分布密度确定动态缓存半径。
[0195] 3.客户端进行缓存数据查找,即根据用户的位置信息及所述动态缓存半径查找本地缓存模块中是否有符合用户需求的缓存数据。
[0196] 4.返回查找结果。
[0197] 5.校验缓存数据是否命中,也就是说,确定是否查找到符合用户需求的缓存数据,具体查找方式可参见前面本申请基于位置的搜索方法实施例中的描述,在此不再赘述。
[0198] 6.如果缓存命中,则向用户返回缓存结果。
[0199] 7.1.如果缓存未命中,则召回引擎数据,即向搜索引擎发送搜索请求,同时,还要将用户的位置信息发送给搜索引擎。
[0200] 7.2.搜索引擎向客户端返回搜索数据。
[0201] 7.3.客户端从搜索引擎返回的搜索数据中筛选出动态缓存半径范围内的搜索数据作为搜索结果。
[0202] 7.4.1.客户端向用户返回搜索结果。
[0203] 7.4.2.客户端将所述搜索结果缓存到缓存模块。
[0204] 需要说明的是,在实际应用中,所述客户端安装在所述用户设备上,所述用户设备为以下任意一种或多种:移动终端、台式电脑、笔记本电脑、IPAD。所述客户端的一种具体结构可以参见图4所示。
[0205] 通常,所述用户设备具有显示屏,相应地,所述客户端的另一种具体结构还可包括:与所述用户交互接口401相连的搜索结果处理单元,用于将所述搜索结果的内容展现在所述显示屏上。所述搜索结果的内容可以包括:用于表示特定对象的图形接口、以及用户点击所述图形接口使所述用户设备导航至所述特定对象的附加内容。
[0206] 本申请提供的基于位置的搜索系统,基于动态变换的动态缓存半径进行搜索结果的缓存,缓存的数据更加接近用户周边的真实环境,不仅有效地减轻了搜索引擎的负荷,而且可以向用户返回更精准的搜索结果,提升用户体验。
[0207] 本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
[0208] 在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0209] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
[0210] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可利用存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0211] 本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈