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 );
             }
           }