1

我一直在寻找逃离 GAE 的方法,因为数据存储不支持很多我想用它做的事情。

所以我查看了 CouchDB(以及其他),我真的很喜欢我在 Cloudant 找到的 REST 接口和托管选项。

但是对于我所有的谷歌搜索和阅读我能找到的任何文档,我仍然不确定它是否合适。所以我来这里是希望有人可能有更多的见解。

我编写网络应用程序,我想做的很多项目都会涉及如下查询:

查找 user-input-lat/long 边界框内的所有条目,其中 start-time 小于 user-input-time-1 并且 end-time 大于 user-input-time-2 并且所有标签都在用户输入标签列表。

那甚至不是伪代码,但我希望无论如何它是有意义的。

我不只是在寻找“你不能在 CouchDB 中做到这一点”。某种解释,也许像“如果你可以没有标签,那么你可以这样做:”

我想使用 Cloudant 服务,所以 GeoCouch 显然是不可能的,但他们做的事情应该像 lucene 一样工作,但这是否意味着查询很慢?

如您所知,我在这里有点困惑,所以请尽力使我理顺,我会很高兴的:)

4

1 回答 1

0

不提标签(这本身就是一个问题),你描述的是一个多维查询:你有几个“坐标”(纬度,经度,开始时间,结束时间)并为每个提供一个范围这些坐标。

就其本身而言,CouchDB 根本无法执行多维查询——您只能在一个坐标上获得单维查询。

标签当然是可能的,但这取决于您是否需要列表中至少有一个标签的文档,还是列表中包含所有标签的文档。第一种情况很简单(使用批量 API 为每个标签运行一个查询),第二种可能需要过多的内存(如果文档有 N 个标签,它需要发出 2 N-1 个标签集以匹配所有可能的涉及它的标签组合,因此您应该为文档中的标签数量或查询中的标签数量设置上限)。

Lucene 确实允许多维和基于关键字的查询,但我不能保证它们的性能。

于 2012-06-26T14:01:03.930 回答