Android 使用Parse作为后端的快速最近邻搜索
因此,我必须在我的应用程序上实现一个最近邻搜索功能,我目前正在使用Parse作为后端。到目前为止,我所做的是执行一个查询并获得结果,然后对它们进行排序,以获得前20-30个结果。但由于我的数据库已经扩大,我现在有大约4000个位置(预计将达到15000个),我必须应用最近邻搜索。这对于实时系统来说是不好的 我的想法:Android 使用Parse作为后端的快速最近邻搜索,android,parse-platform,parse-cloud-code,Android,Parse Platform,Parse Cloud Code,因此,我必须在我的应用程序上实现一个最近邻搜索功能,我目前正在使用Parse作为后端。到目前为止,我所做的是执行一个查询并获得结果,然后对它们进行排序,以获得前20-30个结果。但由于我的数据库已经扩大,我现在有大约4000个位置(预计将达到15000个),我必须应用最近邻搜索。这对于实时系统来说是不好的 我的想法: 我可以使用四叉树编写一个有效的解决方案,但这里有一个陷阱。我知道我可以创建一个作业,创建四叉树并将其保存在内存中,但这似乎是浪费,因为总有一个完整的线程专门用于维护内存中的树,更不
我应该如何解决这个问题?或者我应该尝试其他BaaS,或者使用AWS或AppEngine制作自定义API?我真的不想在这一点上管理负载和安全功能的麻烦,因为这是一个非盈利项目。我将把这项工作留给解析,不需要手动搜索对象。一旦有了
lat
和lon
坐标,只需创建ParseGeoPoint
对象
ParseGeoPoint point = new ParseGeoPoint(lat, lon);
然后使用此查询获取30个最近的对象
ParseQuery<ParseObject> query = ParseQuery.getQuery("YourClass");
query.whereNear("location", point);
query.setLimit(30);
query.findInBackground(new FindCallback<ParseObject>() { ... });
ParseQuery query=ParseQuery.getQuery(“YourClass”);
查询。在何处(“位置”,点);
查询设置限制(30);
findInBackground(新的FindCallback(){…});
查询结果是一个从最近到最远的对象排序的ArrayList
阅读ParseGeoPoint的详细信息。你指的是什么的最近邻?地理点?自定义对象?用于地质点。我使用了类似的方法,但在服务器端处理了GeoPoint(有一个.near()JS函数可以实现这一点)。谢谢你的建议。