2015-02-10 235 views
0

當我用「*」查詢SOLR時,我想知道我可以從solr收到的最大物品是多少。SOLR響應大小限制

我發送2個查詢,在一個請求124K行,並在一個125K,125K失敗,我想明白爲什麼。在SOLR登錄

http://localhost:8983/solr/select?%22start=0&rows=125000&q=*&fl=UniqueId,%20entity_id,%20data_unit_id,%20score&wt=tcp&host=10.175.2.127&port=8985&queryId=4&qt=standard&debugQuery=false%22 

我收到以下錯誤我無法找到任何東西:

HTTP ERROR 500 

Problem accessing /solr/select. Reason: 

{trace=java.lang.NullPointerException 
,code=500} 

當我運行查詢:

http://localhost:8983/solr/select?%22start=0&rows=124000&q=*&fl=UniqueId,%20entity_id,%20data_unit_id,%20score&wt=tcp&host=10.175.2.127&port=8985&queryId=4&qt=standard&debugQuery=false%22 

我得到很好的響應:

<response> 
<lst name="responseHeader"> 
<int name="status">0</int> 
<int name="QTime">6383</int> 
<lst name="params"> 
<str name="port">8985</str> 
<str name="debugQuery">false"</str> 
<str name="host">10.175.2.127</str> 
<str name="fl">UniqueId, entity_id, data_unit_id, score</str> 
<str name="q">*</str> 
<str name="queryId">4</str> 
<str name="qt">standard</str> 
<str name="wt">tcp</str> 
<str name=""start">0</str> 
<str name="rows">124000</str> 
</lst> 
</lst> 
<result name="response" numFound="0" start="0" maxScore="0.0"/> 
</response> 

SOLR Log發送125K行時錯誤的查詢:

INFO - 2015-02-10 10:26:40.122; org.apache.solr.core.SolrCore; [collection1] webapp=/solr path=/select params={port=8985&debugQuery=false"&host=10.175.2.127&fl=UniqueId,+entity_id,+data_unit_id,+score&q=*&queryId=4&qt=standard&wt=tcp&"start=0&rows=125000} hits=1320877 status=500 QTime=1420 
ERROR - 2015-02-10 10:26:40.123; org.apache.solr.common.SolrException; null:org.apache.solr.common.SolrException: java.lang.RuntimeException: Invalid version (expected 2, but 60) or the data in not in 'javabin' format 
at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:302) 

設計是發送HTTP請求和響應讀取的TcpClient,StreamReader的和NetworkSteam(C#),我不明白閱讀,因爲異常響應發送時被拋出HttpWebRequest。

+0

您能否提供有關NPE的日誌? – Mysterion 2015-02-10 09:00:43

+0

在響應中您會得到一個名爲'numFound'的值。這包含通過執行搜索匹配的文檔總數。這是你需要的嗎? – cheffe 2015-02-10 09:20:41

+0

@cheffe當我查詢125k行時,我沒有得到迴應。 – ilansch 2015-02-10 09:22:45

回答

1

通常將設置爲該大數字是非常糟糕的做法。對於大多數應用程序 - 它應該在批處理中完成,例如rows = 50,並且在迭代結果時更改開始

這是一個非常不好的做法,因爲複雜性獲得的ň文件頂部ķ文檔需要O(K *的log(n))和你的情況ň =所有文檔的數量,K - 是參數。