9

为什么搜索索引查询的结果限制为 200 行,而标准视图查询似乎没有限制?

4

2 回答 2

7

从根本上说,因为我们在内存中保存了一个包含 200 个项目的数组,因为我们流过所有命中,保留了得分最高的 200 个命中。标准视图只是流式传输起点和终点之间的所有行。搜索的目的通常是大海捞针,因此您通常不会获取数千个结果(与点击进入第 500 页的 Google 相比?)。如果你没有找到你想要的,你可以优化你的搜索并再次查看。

在某些情况下,检索所有匹配项是有意义的(我们可以按照找到它们的顺序进行流式传输,因此不存在 RAM 问题)。这是我们可以(并且应该)添加的功能,但目前不可用。

于 2013-06-25T23:33:23.657 回答
4

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

于 2013-06-25T23:40:06.667 回答