You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by yo...@apache.org on 2006/02/08 20:19:10 UTC
svn commit: r376027 -
/incubator/solr/trunk/src/java/org/apache/solr/core/QuerySenderListener.java
Author: yonik
Date: Wed Feb 8 11:19:08 2006
New Revision: 376027
URL: http://svn.apache.org/viewcvs?rev=376027&view=rev
Log:
force read of document stored fields in QuerySenderListener (used in firstSearcher and newSearcher event hooks)
Modified:
incubator/solr/trunk/src/java/org/apache/solr/core/QuerySenderListener.java
Modified: incubator/solr/trunk/src/java/org/apache/solr/core/QuerySenderListener.java
URL: http://svn.apache.org/viewcvs/incubator/solr/trunk/src/java/org/apache/solr/core/QuerySenderListener.java?rev=376027&r1=376026&r2=376027&view=diff
==============================================================================
--- incubator/solr/trunk/src/java/org/apache/solr/core/QuerySenderListener.java (original)
+++ incubator/solr/trunk/src/java/org/apache/solr/core/QuerySenderListener.java Wed Feb 8 11:19:08 2006
@@ -17,6 +17,8 @@
package org.apache.solr.core;
import org.apache.solr.search.SolrIndexSearcher;
+import org.apache.solr.search.DocList;
+import org.apache.solr.search.DocIterator;
import org.apache.solr.request.LocalSolrQueryRequest;
import org.apache.solr.request.SolrQueryResponse;
import org.apache.solr.util.NamedList;
@@ -30,14 +32,39 @@
class QuerySenderListener extends AbstractSolrEventListener {
public void newSearcher(SolrIndexSearcher newSearcher, SolrIndexSearcher currentSearcher) {
+ final SolrIndexSearcher searcher = newSearcher;
SolrCore core = SolrCore.getSolrCore();
log.info("QuerySenderListener sending requests to " + newSearcher);
for (NamedList nlst : (List<NamedList>)args.get("queries")) {
try {
- LocalSolrQueryRequest req = new LocalSolrQueryRequest(core, nlst);
+ // bind the request to a particular searcher (the newSearcher)
+ LocalSolrQueryRequest req = new LocalSolrQueryRequest(core,nlst) {
+ public SolrIndexSearcher getSearcher() {
+ return searcher;
+ }
+ public void close() {
+ }
+ };
SolrQueryResponse rsp = new SolrQueryResponse();
core.execute(req,rsp);
+
+ // Retrieve the Document instances (not just the ids) to warm
+ // the OS disk cache, and any Solr document cache. Only the top
+ // level values in the NamedList are checked for DocLists.
+ NamedList values = rsp.getValues();
+ for (int i=0; i<values.size(); i++) {
+ Object o = values.getVal(i);
+ if (o instanceof DocList) {
+ DocList docs = (DocList)o;
+ for (DocIterator iter = docs.iterator(); iter.hasNext();) {
+ newSearcher.doc(iter.nextDoc());
+ }
+ }
+ }
+
+ req.close();
+
} catch (Exception e) {
// do nothing... we want to continue with the other requests.
// the failure should have already been logged.