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 sh...@apache.org on 2009/12/24 10:39:30 UTC
svn commit: r893723 -
/lucene/solr/trunk/src/java/org/apache/solr/handler/component/QueryComponent.java
Author: shalin
Date: Thu Dec 24 09:39:30 2009
New Revision: 893723
URL: http://svn.apache.org/viewvc?rev=893723&view=rev
Log:
SOLR-1685 -- Extracted field sort value and prefetch processing into two new methods out of QueryComponent.process
Modified:
lucene/solr/trunk/src/java/org/apache/solr/handler/component/QueryComponent.java
Modified: lucene/solr/trunk/src/java/org/apache/solr/handler/component/QueryComponent.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/handler/component/QueryComponent.java?rev=893723&r1=893722&r2=893723&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/handler/component/QueryComponent.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/handler/component/QueryComponent.java Thu Dec 24 09:39:30 2009
@@ -19,14 +19,11 @@
import org.apache.lucene.document.Field;
import org.apache.lucene.index.Term;
-import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.search.*;
-import org.apache.lucene.search.FieldCache.DoubleParser;
-import org.apache.lucene.search.FieldCache.LongParser;
-import org.apache.lucene.search.FieldCache.FloatParser;
-import org.apache.lucene.search.FieldCache.IntParser;
-import org.apache.lucene.search.FieldCache.Parser;
import org.apache.lucene.queryParser.ParseException;
+import org.apache.lucene.search.FieldComparator;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.Sort;
+import org.apache.lucene.search.SortField;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrException;
@@ -38,15 +35,14 @@
import org.apache.solr.common.util.StrUtils;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.request.SolrQueryResponse;
-import org.apache.solr.schema.SchemaField;
import org.apache.solr.schema.FieldType;
+import org.apache.solr.schema.SchemaField;
import org.apache.solr.search.*;
import org.apache.solr.util.SolrPluginUtils;
import java.io.IOException;
import java.net.URL;
import java.util.*;
-import java.text.Collator;
/**
* TODO!
@@ -185,6 +181,14 @@
rsp.add("response",rb.getResults().docList);
rsp.getToLog().add("hits", rb.getResults().docList.matches());
+ doFieldSortValues(rb, searcher);
+ doPrefetch(rb);
+ }
+
+ protected void doFieldSortValues(ResponseBuilder rb, SolrIndexSearcher searcher) throws IOException
+ {
+ SolrQueryRequest req = rb.req;
+ SolrQueryResponse rsp = rb.rsp;
// The query cache doesn't currently store sort field values, and SolrIndexSearcher doesn't
// currently have an option to return sort field values. Because of this, we
@@ -262,7 +266,12 @@
rsp.add("sort_values", sortVals);
}
+ }
+ protected void doPrefetch(ResponseBuilder rb) throws IOException
+ {
+ SolrQueryRequest req = rb.req;
+ SolrQueryResponse rsp = rb.rsp;
//pre-fetch returned documents
if (!req.getParams().getBool(ShardParams.IS_SHARD,false) && rb.getResults().docList != null && rb.getResults().docList.size()<=50) {
// TODO: this may depend on the highlighter component (or other components?)
@@ -555,10 +564,12 @@
for (SolrDocument doc : docs) {
Object id = doc.getFieldValue(keyFieldName);
ShardDoc sdoc = rb.resultIds.get(id.toString());
- if (returnScores && sdoc.score != null) {
- doc.setField("score", sdoc.score);
+ if (sdoc != null) {
+ if (returnScores && sdoc.score != null) {
+ doc.setField("score", sdoc.score);
+ }
+ rb._responseDocs.set(sdoc.positionInResponse, doc);
}
- rb._responseDocs.set(sdoc.positionInResponse, doc);
}
}
}