Yonik Seeley-2-2 wrote
> On Wed, Dec 28, 2011 at 5:47 AM, ku3ia <

> demesg@

> > wrote:
>> So, based on p.2) and on my previous researches, I conclude, that the
>> more
>> documents I want to retrieve, the slower is search and main problem is
>> the
>> cycle in writeDocs method. Am I right? Can you advice something in this
>> situation?
> 
> For the first phase in a distributed search, Solr must return the top
> N ids (in your case 200).  It currently does this by loading stored
> fields, which is slow.  A better approach is to store the "id" field
> as a column stride field.
> 
> https://issues.apache.org/jira/browse/SOLR-2753
> 
> -Yonik
> http://www.lucidimagination.com

Hi all again.
I have upgraded Solr version to 4.6.0 and want to test DocValues fields in
action.
My schema is: 4 shards of 48M of docs each. All shards are on the same
machine. I have turned on DV for "id" field in my schema.xml:

<field name="RecordID" type="uid" indexed="true" stored="true"
required="true" docValues="true"/>
...
<uniqueKey>RecordID</uniqueKey>
...
<fieldType name="uid" class="solr.StrField" sortMissingLast="true"
docValuesFormat="Disk"/>

I had created 30 queries like,
q=(a OR b) OR (c OR "d e" OR f), where "a" through "f" are random words

These queries were curled each other, not concurrently. After that I turned
off doc values, rebuild all four shards and runs queries again.

At results, a haven't seen any difference between stored ID field and
docValues and one more moment, when I set stored=false and docValues=true
for "id" field I had an error when running distributed search:

ERROR - 2013-12-12 16:59:45.508; org.apache.solr.common.SolrException;
java.lang.NullPointerException
        at
org.apache.solr.handler.component.QueryComponent.mergeIds(QueryComponent.java:1004)
        at
org.apache.solr.handler.component.QueryComponent.handleRegularResponses(QueryComponent.java:750)
        at
org.apache.solr.handler.component.QueryComponent.handleResponses(QueryComponent.java:729)
        at
org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:312)
        at
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
        at org.apache.solr.core.SolrCore.execute(SolrCore.java:1863)
        at
org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:710)
        at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:413)
        at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:197)
        at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
        at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
        at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
        at
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
        at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
        at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
        at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
        at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
        at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
        at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
        at
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
        at
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
        at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
        at org.eclipse.jetty.server.Server.handle(Server.java:370)
        at
org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
        at
org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949)
        at
org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
        at
org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
        at
org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
        at
org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
        at
org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
        at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
        at
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
        at java.lang.Thread.run(Thread.java:744)

This error is on QueryComponent on merge Ids:
resultIds.put(shardDoc.id.toString(), shardDoc);

So seems it try to use stored "id", not docvalue? I tried different codecs:
Direct, Disk, Memory, Lucene45. Results are nearby the same.

Can you advise me, may be I'm wrong in my configs or I'm not understand when
usage of CSF is faster than traditional stored fields.

Thanks.




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

Reply via email to