2013-06-25 168 views

回答

7

基本上,因爲我們在內存中保存了200項數組,因此我們在所有匹配中流動,保留前200個得分匹配。標準視圖只是在開始點和結束點之間流動所有行。搜索的目的通常是在大海撈針中找到針,所以通常不會獲取數千個結果(與點擊500頁的Google相比)。如果你沒有找到你想要的,你可以優化你的搜索,然後再看。

有些情況下,檢索所有匹配是有意義的(我們可以按照我們找到它們的順序進行流式處理,所以沒有RAM問題)。這是我們可以(也應該)添加的功能,但目前尚不可用。

+0

我在任何地方都使用搜索索引(連同關鍵字/ perfield分析器)來彌補CouchDB非常差的原生查詢能力,所以這就是原因。 –

4

值得注意的是_view API(又名「mapreduce」)由於磁盤上的結果排序而與搜索有着根本的區別。物化視圖持久存在於CouchDB b +樹中,因此它們基本上是按鍵排序的。這允許有效的範圍查詢(開始/結束鍵),並使限制/尋呼變得微不足道。但是,這也意味着您必須對磁盤上的視圖行進行排序,這會限制您可以針對物化視圖執行的布爾查詢的類型。這就是搜索幫助的地方,但Bob(又名「Lucene專家」)注意到了這些限制。