当我用" *"查询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发送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 :(得分:1)
将行设置为该大号通常是一种非常糟糕的做法。对于大多数应用程序 - 它应该在批处理中完成,例如 rows = 50 ,并在迭代结果时更改 start 。
这是一种非常糟糕的做法,因为获得 N 文档的顶级 K 文档的复杂性需要 O(K * log(N))< / strong>在您的情况下 N =所有文档的数量, K - 是行参数。