2013-06-25 116 views

回答

7

基本上,因为我们在内存中保存了200项数组,因此我们在所有匹配中流动,保留前200个得分匹配。标准视图只是在开始点和结束点之间流动所有行。搜索的目的通常是在大海捞针中找到针,所以通常不会获取数千个结果(与点击500页的Google相比)。如果你没有找到你想要的,你可以优化你的搜索,然后再看。

有些情况下,检索所有匹配是有意义的(我们可以按照我们找到它们的顺序进行流式处理,所以没有RAM问题)。这是我们可以(也应该)添加的功能,但目前尚不可用。

+0

我在任何地方都使用搜索索引(连同关键字/ perfield分析器)来弥补CouchDB非常差的原生查询能力,所以这就是原因。 –

4

值得注意的是_view API(又名“mapreduce”)由于磁盘上的结果排序而与搜索有着根本的区别。物化视图持久存在于CouchDB b +树中,因此它们基本上是按键排序的。这允许有效的范围查询(开始/结束键),并使限制/寻呼变得微不足道。但是,这也意味着您必须对磁盘上的视图行进行排序,这会限制您可以针对物化视图执行的布尔查询的类型。这就是搜索帮助的地方,但Bob(又名“Lucene专家”)注意到了这些限制。