0

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

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

4

1 回答 1

0

无法添加附加参数(据我所知)。您可以执行 bbox,然后在附加参数上执行结果和附加搜索,但这将是应用程序和数据库之间的大量额外网络流量。

我最终从 iriscouch 切换到 cloudant。lucene 搜索索引功能给了我我需要的东西。您可以索引纬度/经度,然后添加一个额外的参数......太棒了!

Iriscouch 可能有这个功能,但我找不到。

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

于 2013-05-23T11:57:27.630 回答