solr使用cursorMark做深度分頁

2021-07-12 01:51:49 字數 947 閱讀 1741

深度分頁

深度分頁是指給搜尋結果指定乙個很大的起始位移。

普通分頁在給定乙個大的起始位移時效率十分低下,例如start=1000000,rows=10的查詢,搜尋引擎需要找到前1000010條記錄然後再返回最後10條。solr為了最後10條記錄只會檢索排序字段,但是前1000010條記錄的內部排序開銷依然十分大。

普通分頁基礎上的深度分頁對分布式搜尋引擎而言甚至是更低效的,因為為了找到正確的10條記錄,來自各個分片的前1000010條記錄的排序字段需要被返回和聚合在乙個聚合節點。

使用cursormark(游標記錄)

cursormark引數允許高效地在大結果集上遍歷。它可以在單點或分布式搜尋引擎上工作。

怎樣使用cursormark:

1.排序必須包括id欄位的嚴格排序策略,這防止了用lucene記錄id做內部排序導致的排序中存在相等的情況。

2.任何包括cursormark的呼叫start欄位必須是0。

3.第一次請求時傳遞cursormark=*。

4.solr的返回結果中會有nextcursormark,在下次呼叫時簡單地使用這個值作為cursormark以繼續結果集的分頁。

深度分頁curosrmark實現時要注意的點

1.cursormark引數自身包含了所有的必要狀態,沒有服務端的狀態。

2.start引數總是返回0,這取決於客戶端指出要展示的是什麼位置。

3.沒必要使用cursormark排序到底,因為服務端沒有儲存狀態,隨時都可以終止排序。

4.你有兩種方法知道搜尋結果的排序到底了,沒有返回和你請求的一樣的行數,或者返回的coursormark和你傳遞的一樣(此時返回的行數為0)。

5.儘管start引數必須是0,每次呼叫都可以變換row值。

6.修改返回欄位和facet欄位時,cursormark也是可以重用的。

7.客戶端可以通過再次提交之前的cursormark高效地往回翻頁。

solr安裝使用

solr安裝使用 1.安裝啟動 wget tar zxvf solr 6.6.0.tgz cd bin solr start force 啟動服務後在瀏覽器中訪問 2.刪除 service solr stop sudo rm r var solr sudo rm r opt solr 5.3.1 s...

solr屬性multivalued使用

業務目的 資料在hive中,用 location 山東,河北,陝西 這種來儲存,後入到hbase中,現在將hbase資料匯入solr後,同時期待 搜尋 location 山東 location 河北 location 陝西 都能搜尋到這條記錄 處理流程 solr schema.xml中,multiv...

Solr使用初探 SolrJ的使用

二 solrj的使用 solrj覆蓋了solr的全部功能,下面將自己在實際開發中所使用的程式貼上出來並適當加以解釋,由於本人比較菜,書寫不是那麼的精練,還請見諒。1 建立solrserver物件 try catch exception e catch exception e catch except...