我有一些存儲在Solr集羣中的文檔,並希望通過特定的查詢獲取大量文檔(大約2000萬)。我使用標準方法讀取批次的行(比如10000),並使用start
參數移動到下一批次。然而,在大約1 400 000個文檔後,我開始獲得OutOfMemoryError
。我相信這是因爲Solr在將文檔發送給客戶之前對其進行排序的方式。據我所知,它使用優先級隊列來獲得最前N個結果,因此不需要將所有文件的標題加載到內存中。但是,當我要求它返回結果時,比如從1,000,000到1,010,000,它必須爲所有先前的1,000,000個文檔加載標題。如何關閉Solr中的排序?
我正在尋找一種方法來避免這種情況,只是得到的所有結果滿足查詢不排序。有沒有辦法做到這一點?如果不是,從Solr獲得大量結果的適當方法是什麼?
謝謝,這是我錯過的一個選項。實際上,我使用Solr主要不是作爲搜索引擎(通過相關性和所有這些功能進行排序),而是作爲具有容易標記和干擾文本的功能的存儲。後來我決定在前端使用Lucene的MongoDB更適合這種用途。所以現在我只是試圖將所有數據從Solr移動到MongoDB,因此確實需要逐批獲取所有文檔。 – ffriend