You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ry...@apache.org on 2015/06/02 21:16:01 UTC
svn commit: r1683162 - in /lucene/dev/trunk: ./ solr/ solr/core/
solr/core/src/java/org/apache/solr/response/
solr/core/src/java/org/apache/solr/response/transform/
solr/core/src/java/org/apache/solr/search/
solr/core/src/test-files/solr/collection1/co...
Author: ryan
Date: Tue Jun 2 19:16:00 2015
New Revision: 1683162
URL: http://svn.apache.org/r1683162
Log:
Merged revision(s) 1683134 from lucene/dev/branches/branch_5x:
SOLR-7622: let DocTransformers request extra fields
........
Added:
lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-doctransformers.xml
- copied unchanged from r1683134, lucene/dev/branches/branch_5x/solr/core/src/test-files/solr/collection1/conf/solrconfig-doctransformers.xml
lucene/dev/trunk/solr/core/src/test/org/apache/solr/response/TestCustomDocTransformer.java
- copied unchanged from r1683134, lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/response/TestCustomDocTransformer.java
Modified:
lucene/dev/trunk/ (props changed)
lucene/dev/trunk/solr/ (props changed)
lucene/dev/trunk/solr/CHANGES.txt (contents, props changed)
lucene/dev/trunk/solr/core/ (props changed)
lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/ResponseWriterUtil.java
lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/DocTransformer.java
lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrReturnFields.java
Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1683162&r1=1683161&r2=1683162&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Tue Jun 2 19:16:00 2015
@@ -84,6 +84,10 @@ New Features
* SOLR-7389: Expose znodeVersion property for each of the collections returned for the clusterstatus
operation in the collections API (Marius Grama via shalin)
+* SOLR-7622: A DocTransformer can now request fields from the SolrIndexSearcher that are not
+ necessarily returned in the file SolrDocument by returning a list of fields from
+ DocTransformer#getExtraRequestFields (ryan)
+
Bug Fixes
----------------------
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/ResponseWriterUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/ResponseWriterUtil.java?rev=1683162&r1=1683161&r2=1683162&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/ResponseWriterUtil.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/ResponseWriterUtil.java Tue Jun 2 19:16:00 2015
@@ -17,6 +17,7 @@ package org.apache.solr.response;
* limitations under the License.
*/
+import org.apache.lucene.document.StoredField;
import org.apache.lucene.index.StorableField;
import org.apache.lucene.index.StoredDocument;
import org.apache.solr.common.SolrDocument;
@@ -54,4 +55,15 @@ public class ResponseWriterUtil {
}
return out;
}
+
+ public static String getAsString(String field, SolrDocument doc) {
+ Object v = doc.getFirstValue(field);
+ if(v != null) {
+ if(v instanceof StoredField) {
+ return ((StoredField)v).stringValue();
+ }
+ return v.toString();
+ }
+ return null;
+ }
}
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/DocTransformer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/DocTransformer.java?rev=1683162&r1=1683161&r2=1683162&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/DocTransformer.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/DocTransformer.java Tue Jun 2 19:16:00 2015
@@ -20,7 +20,9 @@ package org.apache.solr.response.transfo
import java.io.IOException;
import org.apache.solr.common.SolrDocument;
-import org.apache.solr.request.SolrQueryRequest;
+import org.apache.solr.response.QueryResponseWriter;
+import org.apache.solr.response.ResponseWriterUtil;
+import org.apache.solr.search.SolrIndexSearcher;
/**
* A DocTransformer can add, remove or alter a Document before it is written out to the Response. For instance, there are implementations
@@ -57,6 +59,19 @@ public abstract class DocTransformer
*/
public abstract void transform(SolrDocument doc, int docid) throws IOException;
+ /**
+ * When a transformer needs access to fields that are not automaticaly derived from the
+ * input fields names, this option lets us explicitly say the field names that we hope
+ * will be in the SolrDocument. These fields will be requestd from the
+ * {@link SolrIndexSearcher} but may or may not be returned in the final
+ * {@link QueryResponseWriter}
+ *
+ * @return a list of extra lucene fields
+ */
+ public String[] getExtraRequestFields() {
+ return null;
+ }
+
@Override
public String toString() {
return getName();
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrReturnFields.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrReturnFields.java?rev=1683162&r1=1683161&r2=1683162&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrReturnFields.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrReturnFields.java Tue Jun 2 19:16:00 2015
@@ -264,6 +264,14 @@ public class SolrReturnFields extends Re
MapSolrParams augmenterParams = new MapSolrParams( augmenterArgs );
DocTransformer t = factory.create(disp, augmenterParams, req);
if(t!=null) {
+ if(!_wantsAllFields) {
+ String[] extra = t.getExtraRequestFields();
+ if(extra!=null) {
+ for(String f : extra) {
+ fields.add(f); // also request this field from IndexSearcher
+ }
+ }
+ }
augmenters.addTransformer( t );
}
}