Thanks everyone for the responses.

I did some more queries and watched disk activity with iostat. Sure enough,
during some of the slow queries the disk was pegged at 100% (or more.)

The requirement for the app I'm building is to be able to retrieve 500
results in ideally one second. The index has 3 million records. Most
searches do bring back 500 results, or close to that many.

This is my schema:

   <field name="metaDataUrl" type="string" indexed="true" stored="true"
required="true"/>
   <field name="title" type="text" stored="true" indexed="true"/>
   <field name="snippet" type="text" indexed="true" stored="true"/>
   <field name="rest" type="string" stored="true" indexed="false"
multiValued="true"/>
   <field name="date_indexed" type="date" indexed="true" stored="true"
default="NOW" multiValued="false"/>
   <field name="all" type="text" stored="false" indexed="true"
multiValued="true"/>

These are my copyField values:

   <copyField source="title" dest="all"/>
   <copyField source="snippet" dest="all"/>

The "rest" field is an array of several fairly small strings.

I've set size and initialSize to 100000 for queryResultCache and
documentCache. I've got the tomcat configured to use 4 GB of memory.

Yonik, can you please explain what you mean by this?

> For scalability, we don't read all of the stored fields for the whole 
> list into memory before starting to send the results, but stream them 
> back instead. 

How do you implement this streaming?

I suppose I could experiment with returning just the metaDataUrl field. If
that's consistently fast then I can look at ways to retrieve title, snippet,
and rest more quickly.

I'd appreciate any input you, or anyone, can provide on how to optimize
this.




--
View this message in context: 
http://lucene.472066.n3.nabble.com/small-QTime-but-slow-results-to-user-tp4027100p4027224.html
Sent from the Solr - User mailing list archive at Nabble.com.

Reply via email to