couchdb中的多维空间查询

时间:2013-05-16 00:43:02

标签: couchdb geospatial

使用CouchDB(和GeoCouch),我有一个带有中心坐标(lat& long)的文档类型,我可以用bbox查询来查询,只需输入西北经度/纬度和西南经度/ latitued。我的位置文档还有一个名为Users的属性,其中包含用户列表。我希望能够通过在Users数组中添加特定用户的过滤来执行bbox。这可能吗?

添加了有关问题的详细信息: 重要的原因是因为我可能有一百万个不同的位置文档,每个文档都有一个User数组中的用户列表(每个位置可能有10-100个用户标记)。我正在尝试查找一组用户的位置列表。所以我有3个用户进行特定搜索,我想在给定的边界内找到这些用户的所有位置。我能想到处理这种情况的唯一方法是首先执行bbox空间查询,然后循环遍历结果集以确定用户是否匹配3个用户的列表。这意味着循环可能非常大的原始结果集(位置列表)。似乎非常低效。我希望为我的bbox查询添加一个额外的维度,以便用户进行过滤,但我无法弄清楚如何完成此操作或是否可行。 谢谢!

1 个答案:

答案 0 :(得分:0)

无法添加其他参数(我可以收集)。您可以执行bbox,然后执行结果并在其他parm上进行其他搜索,但这会在应用程序和数据库之间产生大量额外的网络流量。

我最终从iriscouch转为cloudant。 lucene搜索索引功能给了我所需要的东西。你可以索引lat / lon,然后添加一个额外的parm ...真棒!

Iriscouch可能有此功能,但我找不到它。

geo?q = lat:[90 TO 0] AND lon:[150 TO 0] AND user:username