Hi, Erick. Thanks for your advice.
>>Here's another test. Add &debugQuery=on to your query and post the
results.
Here is for 2K rows:
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">53153</int>
<lst name="params">
<str name="debugQuery">on</str>
<str name="fl">*,score</str>
<str name="shards">
127.0.0.1:8080/solr/shard1,127.0.0.1:8080/solr/shard2,127.0.0.1:8080/solr/shard3,127.0.0.1:8080/solr/shard4
</str>
<str name="ident">true</str>
<str name="start">0</str>
<str name="q">(mainstreaming)</str>
<str name="rows">2000</str>
</lst>
</lst>
<result name="response" numFound="2305" start="0" maxScore="4.657284">
>>>Here 2K docs<<<
</result>
<lst name="debug">
<str name="rawquerystring">(mainstreaming)</str>
<str name="querystring">(mainstreaming)</str>
<str name="parsedquery">ArticleText:mainstream</str>
<str name="parsedquery_toString">ArticleText:mainstream</str>
<str name="QParser">LuceneQParser</str>
<lst name="timing">
<double name="time">67797.0</double>
<lst name="prepare">
<double name="time">73.0</double>
<lst name="org.apache.solr.handler.component.QueryComponent">
<double name="time">72.0</double>
</lst>
<lst name="org.apache.solr.handler.component.FacetComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.MoreLikeThisComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.HighlightComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.StatsComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.DebugComponent">
<double name="time">0.0</double>
</lst>
</lst>
<lst name="process">
<double name="time">67724.0</double>
<lst name="org.apache.solr.handler.component.QueryComponent">
<double name="time">66607.0</double>
</lst>
<lst name="org.apache.solr.handler.component.FacetComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.MoreLikeThisComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.HighlightComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.StatsComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.DebugComponent">
<double name="time">1115.0</double>
</lst>
</lst>
</lst>
<lst name="explain">
...
</lst>
</lst>
</response>

And this is for 10:
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">3626</int>
<lst name="params">
<str name="debugQuery">on</str>
<str name="fl">*,score</str>
<str name="shards">
127.0.0.1:8080/solr/shard1,127.0.0.1:8080/solr/shard2,127.0.0.1:8080/solr/shard3,127.0.0.1:8080/solr/shard4
</str>
<str name="ident">true</str>
<str name="start">0</str>
<str name="q">(mainstreaming)</str>
<str name="rows">10</str>
</lst>
</lst>
<result name="response" numFound="2305" start="0" maxScore="4.657284">
>>>Here 10 docs<<<
</result>
<lst name="debug">
<str name="rawquerystring">(mainstreaming)</str>
<str name="querystring">(mainstreaming)</str>
<str name="parsedquery">ArticleText:mainstream</str>
<str name="parsedquery_toString">ArticleText:mainstream</str>
<str name="QParser">LuceneQParser</str>
<lst name="timing">
<double name="time">566.0</double>
<lst name="prepare">
<double name="time">17.0</double>
<lst name="org.apache.solr.handler.component.QueryComponent">
<double name="time">17.0</double>
</lst>
<lst name="org.apache.solr.handler.component.FacetComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.MoreLikeThisComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.HighlightComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.StatsComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.DebugComponent">
<double name="time">0.0</double>
</lst>
</lst>
<lst name="process">
<double name="time">549.0</double>
<lst name="org.apache.solr.handler.component.QueryComponent">
<double name="time">353.0</double>
</lst>
<lst name="org.apache.solr.handler.component.FacetComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.MoreLikeThisComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.HighlightComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.StatsComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.DebugComponent">
<double name="time">196.0</double>
</lst>
</lst>
</lst>
<lst name="explain">
...
</lst>
</lst>
</response>

>>Also, I really have a hard time seeing what advantage you get from 
>>putting all those shards on the same machine, you're just creating 
>>extra work.
Yeah, on my production I have 5 servers and 6 shards (big shards) on each.
But I tried to use only one shard for each server (summary five shards) but
results wasn't fine.

>>Although there's one other possibility: By returning 2,000 rows, you 
>>require that each shard assemble a list of the top 2,000 documents 
>>and then they are collated into a single packet, so you're asking 
>>the system to do a lot of list processing.
So, as I understand, my main problem is to get 2000 rows from each shard?

P.S. Is any mechanism, for example, to get top 100 rows from each shard,
only merge it, sort by defined at query filed or score and pull result to
the user?

--
View this message in context: 
http://lucene.472066.n3.nabble.com/Poor-performance-on-distributed-search-tp3590028p3597893.html
Sent from the Solr - User mailing list archive at Nabble.com.

Reply via email to