2016-02-12 158 views
0

我想通過非常廣泛的查詢分頁,但即使存在行和開始參數,Solr也只返回10個結果。通過Solr搜索結果分頁

http://localhost:8983/solr/patents/query?q=*:*&rows=10000000&start=9 

這將返回:

{ 
    "responseHeader":{ 
    "status":0, 
    "QTime":0, 
    "params":{ 
     "q":"*:*", 
     "start":"9", 
     "rows":"10000000"}}, 
    "response":{"numFound":10,"start":9,"docs":[ 
     { 
     "date":"1980-07-10T00:00:00Z", 
     "id":117008, 
     "country":"US", 
     "title":"Solr test", 
     "_version_":1525967658488430592}] 
    }} 

什麼是經過幾千年的文檔進行分頁的最佳方法?

+0

這是什麼目標?無論如何,通過如此高的行值從Solr獲取大量文檔不是一個好主意。分頁意味着取小批量。如果您想在其他地方從您的索引路由/傳輸文檔,則有更好的方法。 – cheffe

回答

1

對於你應該使用遊標作爲性能的標準要求start高值降低深分頁:https://cwiki.apache.org/confluence/display/solr/Pagination+of+Results

您當前的查詢看起來技術上是正確的(雖然壞從性能角度看),你的指數僅僅只有10文件如numFound所述。

+0

非常感謝,看來在數據導入運行時,Solr只能看到10個文檔,可能是因爲以前的調試運行。 – Istvan

+1

這聽起來很合理。對於Solr來說,頻繁的提交通常代價很高,因此對於批量索引而言,很少或僅僅進行一次(最終)是很有意義的。如果你希望看到你的工作進度,你可以發出一個手工提交:http://stackoverflow.com/questions/7815628/most-simple-way-url-to-trigger-solr-commit-of-all- pending-docs –

+1

如果您想跟蹤進度,請執行softCommit('')。這樣更便宜,更快捷。 – cheffe