You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by cp...@apache.org on 2016/10/26 18:12:51 UTC

[1/2] lucene-solr:jira/solr-8542-v2: SOLR-8542: cleanups (thank you IDE) + tweaks

Repository: lucene-solr
Updated Branches:
  refs/heads/jira/solr-8542-v2 f91f33bca -> 4e444db65


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java
index 0d8b4fa..0336bf2 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java
@@ -31,22 +31,18 @@ import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.Term;
-import org.apache.lucene.search.BooleanClause.Occur;
-import org.apache.lucene.search.BooleanQuery.Builder;
+import org.apache.lucene.search.BooleanClause;
+import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.Explanation;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.ScoreDoc;
-import org.apache.lucene.search.Scorer.ChildScorer;
+import org.apache.lucene.search.Scorer;
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.search.TopDocs;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
 import org.apache.solr.core.SolrResourceLoader;
-import org.apache.solr.ltr.LTRRescorer;
-import org.apache.solr.ltr.LTRScoringQuery;
-import org.apache.solr.ltr.LTRScoringQuery.ModelWeight;
-import org.apache.solr.ltr.LTRScoringQuery.ModelWeight.ModelScorer;
 import org.apache.solr.ltr.feature.Feature;
 import org.apache.solr.ltr.feature.FieldValueFeature;
 import org.apache.solr.ltr.model.LTRScoringModel;
@@ -62,7 +58,7 @@ import org.slf4j.LoggerFactory;
 public class TestLTRReRankingPipeline extends LuceneTestCase {
 
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-  
+
   private static final SolrResourceLoader solrResourceLoader = new SolrResourceLoader();
 
   private IndexSearcher getSearcher(IndexReader r) {
@@ -133,9 +129,9 @@ public class TestLTRReRankingPipeline extends LuceneTestCase {
     w.close();
 
     // Do ordinary BooleanQuery:
-    final Builder bqBuilder = new Builder();
-    bqBuilder.add(new TermQuery(new Term("field", "wizard")), Occur.SHOULD);
-    bqBuilder.add(new TermQuery(new Term("field", "oz")), Occur.SHOULD);
+    final BooleanQuery.Builder bqBuilder = new BooleanQuery.Builder();
+    bqBuilder.add(new TermQuery(new Term("field", "wizard")), BooleanClause.Occur.SHOULD);
+    bqBuilder.add(new TermQuery(new Term("field", "oz")), BooleanClause.Occur.SHOULD);
     final IndexSearcher searcher = getSearcher(r);
     // first run the standard query
     TopDocs hits = searcher.search(bqBuilder.build(), 10);
@@ -145,7 +141,7 @@ public class TestLTRReRankingPipeline extends LuceneTestCase {
 
     final List<Feature> features = makeFieldValueFeatures(new int[] {0, 1, 2},
         "final-score");
-    final List<Normalizer> norms = 
+    final List<Normalizer> norms =
         new ArrayList<Normalizer>(
             Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
     final List<Feature> allFeatures = makeFieldValueFeatures(new int[] {0, 1,
@@ -204,9 +200,9 @@ public class TestLTRReRankingPipeline extends LuceneTestCase {
     w.close();
 
     // Do ordinary BooleanQuery:
-    final Builder bqBuilder = new Builder();
-    bqBuilder.add(new TermQuery(new Term("field", "wizard")), Occur.SHOULD);
-    bqBuilder.add(new TermQuery(new Term("field", "oz")), Occur.SHOULD);
+    final BooleanQuery.Builder bqBuilder = new BooleanQuery.Builder();
+    bqBuilder.add(new TermQuery(new Term("field", "wizard")), BooleanClause.Occur.SHOULD);
+    bqBuilder.add(new TermQuery(new Term("field", "oz")), BooleanClause.Occur.SHOULD);
     final IndexSearcher searcher = getSearcher(r);
 
     // first run the standard query
@@ -221,7 +217,7 @@ public class TestLTRReRankingPipeline extends LuceneTestCase {
 
     final List<Feature> features = makeFieldValueFeatures(new int[] {0, 1, 2},
         "final-score");
-    final List<Normalizer> norms = 
+    final List<Normalizer> norms =
         new ArrayList<Normalizer>(
             Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
     final List<Feature> allFeatures = makeFieldValueFeatures(new int[] {0, 1,
@@ -271,7 +267,7 @@ public class TestLTRReRankingPipeline extends LuceneTestCase {
     test.put("fake", 2);
     List<Feature> features = makeFieldValueFeatures(new int[] {0},
         "final-score");
-    List<Normalizer> norms = 
+    List<Normalizer> norms =
         new ArrayList<Normalizer>(
             Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
     List<Feature> allFeatures = makeFieldValueFeatures(new int[] {0},
@@ -279,15 +275,15 @@ public class TestLTRReRankingPipeline extends LuceneTestCase {
     MockModel ltrScoringModel = new MockModel("test",
         features, norms, "test", allFeatures, null);
     LTRScoringQuery query = new LTRScoringQuery(ltrScoringModel);
-    ModelWeight wgt = query.createWeight(null, true, 1f);
-    ModelScorer modelScr = wgt.scorer(null);
+    LTRScoringQuery.ModelWeight wgt = query.createWeight(null, true, 1f);
+    LTRScoringQuery.ModelWeight.ModelScorer modelScr = wgt.scorer(null);
     modelScr.getDocInfo().setOriginalDocScore(new Float(1f));
-    for (final ChildScorer feat : modelScr.getChildren()) {
+    for (final Scorer.ChildScorer feat : modelScr.getChildren()) {
       assertNotNull(((Feature.FeatureWeight.FeatureScorer) feat.child).getDocInfo().getOriginalDocScore());
     }
 
     features = makeFieldValueFeatures(new int[] {0, 1, 2}, "final-score");
-    norms = 
+    norms =
         new ArrayList<Normalizer>(
             Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
     allFeatures = makeFieldValueFeatures(new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8,
@@ -298,7 +294,7 @@ public class TestLTRReRankingPipeline extends LuceneTestCase {
     wgt = query.createWeight(null, true, 1f);
     modelScr = wgt.scorer(null);
     modelScr.getDocInfo().setOriginalDocScore(new Float(1f));
-    for (final ChildScorer feat : modelScr.getChildren()) {
+    for (final Scorer.ChildScorer feat : modelScr.getChildren()) {
       assertNotNull(((Feature.FeatureWeight.FeatureScorer) feat.child).getDocInfo().getOriginalDocScore());
     }
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRScoringQuery.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRScoringQuery.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRScoringQuery.java
index 1dbed26..6b14a87 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRScoringQuery.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRScoringQuery.java
@@ -32,8 +32,8 @@ import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.ReaderUtil;
 import org.apache.lucene.index.Term;
-import org.apache.lucene.search.BooleanClause.Occur;
-import org.apache.lucene.search.BooleanQuery.Builder;
+import org.apache.lucene.search.BooleanClause;
+import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.Scorer;
 import org.apache.lucene.search.TermQuery;
@@ -43,7 +43,6 @@ import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
 import org.apache.solr.core.SolrResourceLoader;
-import org.apache.solr.ltr.LTRScoringQuery.FeatureInfo;
 import org.apache.solr.ltr.feature.Feature;
 import org.apache.solr.ltr.feature.ValueFeature;
 import org.apache.solr.ltr.model.LTRScoringModel;
@@ -129,7 +128,7 @@ public class TestLTRScoringQuery extends LuceneTestCase {
   @Test
   public void testLTRScoringQueryEquality() throws ModelException {
     final List<Feature> features = makeFeatures(new int[] {0, 1, 2});
-    final List<Normalizer> norms = 
+    final List<Normalizer> norms =
         new ArrayList<Normalizer>(
             Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
     final List<Feature> allFeatures = makeFeatures(
@@ -162,8 +161,8 @@ public class TestLTRScoringQuery extends LuceneTestCase {
     // Models with same algorithm, but different efi content should not match
     assertFalse(m1.equals(m0));
     assertFalse(m1.hashCode() == m0.hashCode());
-    
-    
+
+
     final LTRScoringModel algorithm2 = TestLinearModel.createLinearModel(
         "testModelName2",
         features, norms, "testStoreName", allFeatures, modelParams);
@@ -181,7 +180,7 @@ public class TestLTRScoringQuery extends LuceneTestCase {
     assertFalse(m1.hashCode() == m4.hashCode());
   }
 
-  
+
   @Test
   public void testLTRScoringQuery() throws IOException, ModelException {
     final Directory dir = newDirectory();
@@ -206,9 +205,9 @@ public class TestLTRScoringQuery extends LuceneTestCase {
     w.close();
 
     // Do ordinary BooleanQuery:
-    final Builder bqBuilder = new Builder();
-    bqBuilder.add(new TermQuery(new Term("field", "wizard")), Occur.SHOULD);
-    bqBuilder.add(new TermQuery(new Term("field", "oz")), Occur.SHOULD);
+    final BooleanQuery.Builder bqBuilder = new BooleanQuery.Builder();
+    bqBuilder.add(new TermQuery(new Term("field", "wizard")), BooleanClause.Occur.SHOULD);
+    bqBuilder.add(new TermQuery(new Term("field", "oz")), BooleanClause.Occur.SHOULD);
     final IndexSearcher searcher = getSearcher(r);
     // first run the standard query
     final TopDocs hits = searcher.search(bqBuilder.build(), 10);
@@ -219,7 +218,7 @@ public class TestLTRScoringQuery extends LuceneTestCase {
     List<Feature> features = makeFeatures(new int[] {0, 1, 2});
     final List<Feature> allFeatures = makeFeatures(new int[] {0, 1, 2, 3, 4, 5,
         6, 7, 8, 9});
-    List<Normalizer> norms = 
+    List<Normalizer> norms =
         new ArrayList<Normalizer>(
             Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
     LTRScoringModel ltrScoringModel = TestLinearModel.createLinearModel("test",
@@ -235,7 +234,7 @@ public class TestLTRScoringQuery extends LuceneTestCase {
     }
     int[] posVals = new int[] {0, 1, 2};
     int pos = 0;
-    for (FeatureInfo fInfo:modelWeight.featuresInfo) {
+    for (LTRScoringQuery.FeatureInfo fInfo:modelWeight.featuresInfo) {
         if (fInfo == null){
           continue;
         }
@@ -246,7 +245,7 @@ public class TestLTRScoringQuery extends LuceneTestCase {
 
     final int[] mixPositions = new int[] {8, 2, 4, 9, 0};
     features = makeFeatures(mixPositions);
-    norms = 
+    norms =
         new ArrayList<Normalizer>(
             Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
     ltrScoringModel = TestLinearModel.createLinearModel("test",
@@ -256,7 +255,7 @@ public class TestLTRScoringQuery extends LuceneTestCase {
         new LTRScoringQuery(ltrScoringModel));
     assertEquals(mixPositions.length,
         modelWeight.modelFeatureWeights.length);
-    
+
     for (int i = 0; i < mixPositions.length; i++) {
       assertEquals(mixPositions[i],
           modelWeight.modelFeatureValuesNormalized[i], 0.0001);
@@ -265,7 +264,7 @@ public class TestLTRScoringQuery extends LuceneTestCase {
     final ModelException expectedModelException = new ModelException("no features declared for model test");
     final int[] noPositions = new int[] {};
     features = makeFeatures(noPositions);
-    norms = 
+    norms =
         new ArrayList<Normalizer>(
             Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
     try {
@@ -293,7 +292,7 @@ public class TestLTRScoringQuery extends LuceneTestCase {
         return null;
       }
     };
-    norms = 
+    norms =
         new ArrayList<Normalizer>(
             Collections.nCopies(features.size(),norm));
     final LTRScoringModel normMeta = TestLinearModel.createLinearModel("test",

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRWithFacet.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRWithFacet.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRWithFacet.java
index ebab516..12d7924 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRWithFacet.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRWithFacet.java
@@ -19,7 +19,6 @@ package org.apache.solr.ltr;
 
 import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
 import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.ltr.TestRerankBase;
 import org.apache.solr.ltr.feature.SolrFeature;
 import org.apache.solr.ltr.model.LinearModel;
 import org.junit.AfterClass;
@@ -51,7 +50,7 @@ public class TestLTRWithFacet extends TestRerankBase {
         "D", "popularity", "8"));
     assertU(commit());
   }
-  
+
   @Test
   public void testRankingSolrFacet() throws Exception {
     // before();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRWithSort.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRWithSort.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRWithSort.java
index f9740dc..05613f6 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRWithSort.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRWithSort.java
@@ -19,7 +19,6 @@ package org.apache.solr.ltr;
 
 import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
 import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.ltr.TestRerankBase;
 import org.apache.solr.ltr.feature.SolrFeature;
 import org.apache.solr.ltr.model.LinearModel;
 import org.junit.AfterClass;
@@ -50,7 +49,7 @@ public class TestLTRWithSort extends TestRerankBase {
         "D", "popularity", "8"));
     assertU(commit());
   }
-  
+
   @Test
   public void testRankingSolrSort() throws Exception {
     // before();
@@ -71,7 +70,7 @@ public class TestLTRWithSort extends TestRerankBase {
     assertJQ("/query" + query.toQueryString(), "/response/docs/[1]/id=='2'");
     assertJQ("/query" + query.toQueryString(), "/response/docs/[2]/id=='3'");
     assertJQ("/query" + query.toQueryString(), "/response/docs/[3]/id=='4'");
-    
+
     //Add sort
     query.add("sort", "description desc");
     assertJQ("/query" + query.toQueryString(), "/response/numFound/==8");

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestParallelWeightCreation.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestParallelWeightCreation.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestParallelWeightCreation.java
index 6710ef0..2e478a6 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestParallelWeightCreation.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestParallelWeightCreation.java
@@ -20,11 +20,11 @@ import org.apache.solr.client.solrj.SolrQuery;
 import org.junit.Test;
 
 public class TestParallelWeightCreation extends TestRerankBase{
-  
+
   @Test
   public void testLTRScoringQueryParallelWeightCreationResultOrder() throws Exception {
     setuptest("solrconfig-ltr_Th10_10.xml", "schema-ltr.xml");
-    
+
     assertU(adoc("id", "1", "title", "w1 w3", "description", "w1", "popularity",
         "1"));
     assertU(adoc("id", "2", "title", "w2", "description", "w2", "popularity",
@@ -36,27 +36,27 @@ public class TestParallelWeightCreation extends TestRerankBase{
     assertU(adoc("id", "5", "title", "w5", "description", "w5", "popularity",
         "5"));
     assertU(commit());
-    
+
     loadFeatures("external_features.json");
     loadModels("external_model.json");
     loadModels("external_model_store.json");
-    
+
     // check to make sure that the order of results will be the same when using parallel weight creation
     final SolrQuery query = new SolrQuery();
     query.setQuery("*:*");
     query.add("fl", "*,score");
     query.add("rows", "4");
-    
+
     query.add("rq", "{!ltr reRankDocs=4 model=externalmodel efi.user_query=w3}");
     assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/id=='1'");
     assertJQ("/query" + query.toQueryString(), "/response/docs/[1]/id=='3'");
     assertJQ("/query" + query.toQueryString(), "/response/docs/[2]/id=='4'");
     aftertest();
   }
-  
+
   @Test
   public void testLTRQParserThreadInitialization() throws Exception {
-    // setting the value of number of threads to -ve should throw an exception 
+    // setting the value of number of threads to -ve should throw an exception
     String msg1 = null;
     try{
       new LTRThreadModule(1,-1);
@@ -64,7 +64,7 @@ public class TestParallelWeightCreation extends TestRerankBase{
       msg1 = iae.getMessage();;
     }
     assertTrue(msg1.equals("numThreadsPerRequest cannot be less than 1"));
-    
+
     // set totalPoolThreads to 1 and numThreadsPerRequest to 2 and verify that an exception is thrown
     String msg2 = null;
     try{

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestRerankBase.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestRerankBase.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestRerankBase.java
index f224c87..0158dd0 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestRerankBase.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestRerankBase.java
@@ -41,10 +41,9 @@ import org.apache.solr.core.SolrResourceLoader;
 import org.apache.solr.ltr.feature.Feature;
 import org.apache.solr.ltr.feature.FeatureException;
 import org.apache.solr.ltr.feature.ValueFeature;
-import org.apache.solr.ltr.feature.ValueFeature.ValueFeatureWeight;
 import org.apache.solr.ltr.model.LTRScoringModel;
-import org.apache.solr.ltr.model.ModelException;
 import org.apache.solr.ltr.model.LinearModel;
+import org.apache.solr.ltr.model.ModelException;
 import org.apache.solr.ltr.store.rest.ManagedFeatureStore;
 import org.apache.solr.ltr.store.rest.ManagedModelStore;
 import org.apache.solr.request.SolrQueryRequestBase;
@@ -64,7 +63,7 @@ public class TestRerankBase extends RestTestBase {
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
   protected static final SolrResourceLoader solrResourceLoader = new SolrResourceLoader();
-  
+
   protected static File tmpSolrHome;
   protected static File tmpConfDir;
 
@@ -95,7 +94,7 @@ public class TestRerankBase extends RestTestBase {
   public static ManagedModelStore getManagedModelStore() {
     return ManagedModelStore.getManagedModelStore(h.getCore());
   }
-  
+
   protected static SortedMap<ServletHolder,String>  setupTestInit(
       String solrconfig, String schema,
       boolean isPersistent) throws Exception {
@@ -104,10 +103,10 @@ public class TestRerankBase extends RestTestBase {
     tmpConfDir.deleteOnExit();
     FileUtils.copyDirectory(new File(TEST_HOME()),
         tmpSolrHome.getAbsoluteFile());
-    
+
     final File fstore = new File(tmpConfDir, FEATURE_FILE_NAME);
     final File mstore = new File(tmpConfDir, MODEL_FILE_NAME);
-    
+
     if (isPersistent) {
       fstorefile = fstore;
       mstorefile = mstore;
@@ -146,7 +145,7 @@ public class TestRerankBase extends RestTestBase {
     extraServlets.put(solrRestApi, PARENT_ENDPOINT);
 
     System.setProperty("managed.schema.mutable", "true");
-    
+
     return extraServlets;
   }
 
@@ -154,9 +153,7 @@ public class TestRerankBase extends RestTestBase {
       throws Exception {
     initCore(solrconfig, schema);
 
-    File mstore = null;
-    File fstore = null;
-    SortedMap<ServletHolder,String> extraServlets = 
+    SortedMap<ServletHolder,String> extraServlets =
         setupTestInit(solrconfig,schema,false);
     System.setProperty("enable.update.log", "false");
 
@@ -168,9 +165,9 @@ public class TestRerankBase extends RestTestBase {
       throws Exception {
     initCore(solrconfig, schema);
 
-    SortedMap<ServletHolder,String> extraServlets = 
+    SortedMap<ServletHolder,String> extraServlets =
         setupTestInit(solrconfig,schema,true);
-    
+
     createJettyAndHarness(tmpSolrHome.getAbsolutePath(), solrconfig, schema,
         "/solr", true, extraServlets);
   }
@@ -360,7 +357,7 @@ public class TestRerankBase extends RestTestBase {
         features[i] = featureName;
         weights[i] = "\"" + featureName + "\":1.0";
       }
-      loadFeature(featureName, ValueFeatureWeight.class.getCanonicalName(),
+      loadFeature(featureName, ValueFeature.ValueFeatureWeight.class.getCanonicalName(),
           "{\"value\":" + i + "}");
     }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestSelectiveWeightCreation.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestSelectiveWeightCreation.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestSelectiveWeightCreation.java
index 0554dc1..bda2029 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestSelectiveWeightCreation.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestSelectiveWeightCreation.java
@@ -30,8 +30,8 @@ import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.ReaderUtil;
 import org.apache.lucene.index.Term;
-import org.apache.lucene.search.BooleanClause.Occur;
-import org.apache.lucene.search.BooleanQuery.Builder;
+import org.apache.lucene.search.BooleanClause;
+import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.Scorer;
 import org.apache.lucene.search.TermQuery;
@@ -40,7 +40,6 @@ import org.apache.lucene.search.Weight;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
 import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.ltr.LTRScoringQuery;
 import org.apache.solr.ltr.feature.Feature;
 import org.apache.solr.ltr.feature.ValueFeature;
 import org.apache.solr.ltr.model.LTRScoringModel;
@@ -103,12 +102,12 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
     return modelWeight;
 
   }
-  
-  
+
+
   @BeforeClass
   public static void before() throws Exception {
     setuptest("solrconfig-ltr.xml", "schema-ltr.xml");
-    
+
     assertU(adoc("id", "1", "title", "w1 w3", "description", "w1", "popularity",
         "1"));
     assertU(adoc("id", "2", "title", "w2", "description", "w2", "popularity",
@@ -120,7 +119,7 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
     assertU(adoc("id", "5", "title", "w5", "description", "w5", "popularity",
         "5"));
     assertU(commit());
-    
+
     loadFeatures("external_features.json");
     loadModels("external_model.json");
     loadModels("external_model_store.json");
@@ -130,7 +129,7 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
   public static void after() throws Exception {
     aftertest();
   }
- 
+
   @Test
   public void testScoringQueryWeightCreation() throws IOException, ModelException {
     final Directory dir = newDirectory();
@@ -155,9 +154,9 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
     w.close();
 
     // Do ordinary BooleanQuery:
-    final Builder bqBuilder = new Builder();
-    bqBuilder.add(new TermQuery(new Term("field", "wizard")), Occur.SHOULD);
-    bqBuilder.add(new TermQuery(new Term("field", "oz")), Occur.SHOULD);
+    final BooleanQuery.Builder bqBuilder = new BooleanQuery.Builder();
+    bqBuilder.add(new TermQuery(new Term("field", "wizard")), BooleanClause.Occur.SHOULD);
+    bqBuilder.add(new TermQuery(new Term("field", "oz")), BooleanClause.Occur.SHOULD);
     final IndexSearcher searcher = getSearcher(r);
     // first run the standard query
     final TopDocs hits = searcher.search(bqBuilder.build(), 10);
@@ -179,7 +178,7 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
         makeFeatureWeights(features));
     LTRScoringQuery.ModelWeight modelWeight = performQuery(hits, searcher,
         hits.scoreDocs[0].doc, new LTRScoringQuery(ltrScoringModel1, false)); // features not requested in response
-    
+
     assertEquals(features.size(), modelWeight.modelFeatureValuesNormalized.length);
     int validFeatures = 0;
     for (int i=0; i < modelWeight.featuresInfo.length; ++i){
@@ -188,7 +187,7 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
       }
     }
     assertEquals(validFeatures, features.size());
-    
+
     // when features are requested in the response, weights should be created for all features
     final LTRScoringModel ltrScoringModel2 = TestLinearModel.createLinearModel("test",
         features, norms, "test", allFeatures,
@@ -198,7 +197,7 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
 
     assertEquals(features.size(), modelWeight.modelFeatureValuesNormalized.length);
     assertEquals(allFeatures.size(), modelWeight.extractedFeatureWeights.length);
-    
+
     validFeatures = 0;
     for (int i=0; i < modelWeight.featuresInfo.length; ++i){
       if (modelWeight.featuresInfo[i] != null && modelWeight.featuresInfo[i].isUsed()){
@@ -206,16 +205,16 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
       }
     }
     assertEquals(validFeatures, allFeatures.size());
-    
+
     assertU(delI("0"));assertU(delI("1"));
     r.close();
     dir.close();
   }
-  
- 
+
+
   @Test
   public void testSelectiveWeightsRequestFeaturesFromDifferentStore() throws Exception {
-    
+
     final SolrQuery query = new SolrQuery();
     query.setQuery("*:*");
     query.add("fl", "*,score");
@@ -227,7 +226,7 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
     assertJQ("/query" + query.toQueryString(), "/response/docs/[1]/id=='3'");
     assertJQ("/query" + query.toQueryString(), "/response/docs/[2]/id=='4'");
     assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/fv=='matchedTitle:1.0;titlePhraseMatch:0.40254828'"); // extract all features in default store
-    
+
     query.remove("fl");
     query.remove("rq");
     query.add("fl", "*,score");
@@ -237,8 +236,8 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
     assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/id=='1'");
     assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/score==0.999");
     assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/fv=='popularity:3.0;originalScore:1.0'"); // extract all features from fstore4
-    
-   
+
+
     query.remove("fl");
     query.remove("rq");
     query.add("fl", "*,score");

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestEdisMaxSolrFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestEdisMaxSolrFeature.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestEdisMaxSolrFeature.java
index 9fce51a..16e2fe3 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestEdisMaxSolrFeature.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestEdisMaxSolrFeature.java
@@ -51,8 +51,8 @@ public class TestEdisMaxSolrFeature extends TestRerankBase {
   @AfterClass
   public static void after() throws Exception {
     aftertest();
-  }  
-  
+  }
+
   @Test
   public void testEdisMaxSolrFeature() throws Exception {
     loadFeature(
@@ -70,7 +70,7 @@ public class TestEdisMaxSolrFeature extends TestRerankBase {
 
     query.add("rq", "{!ltr model=EdisMax-model reRankDocs=4}");
     query.set("debugQuery", "on");
-    final String res = restTestHarness.query("/query" + query.toQueryString());
+    restTestHarness.query("/query" + query.toQueryString());
     assertJQ("/query" + query.toQueryString(), "/response/numFound/==4");
   }
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestExternalValueFeatures.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestExternalValueFeatures.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestExternalValueFeatures.java
index 707da24..83b37b8 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestExternalValueFeatures.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestExternalValueFeatures.java
@@ -84,5 +84,5 @@ public class TestExternalValueFeatures extends TestRerankBase {
     assertJQ("/query" + query.toQueryString(),
         "/response/docs/[0]/score==0.0");
   }
-  
+
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureExtractionFromMultipleSegments.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureExtractionFromMultipleSegments.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureExtractionFromMultipleSegments.java
index fc6985c..a834589 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureExtractionFromMultipleSegments.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureExtractionFromMultipleSegments.java
@@ -18,6 +18,7 @@ package org.apache.solr.ltr.feature;
 
 import java.util.List;
 import java.util.Map;
+
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.ltr.TestRerankBase;
 import org.junit.AfterClass;
@@ -28,57 +29,58 @@ import org.noggit.ObjectBuilder;
 
 public class TestFeatureExtractionFromMultipleSegments extends TestRerankBase {
   static final String AB = "abcdefghijklmnopqrstuvwxyz";
-  
+
   static String randomString( int len ){
     StringBuilder sb = new StringBuilder( len );
-    for( int i = 0; i < len; i++ ) 
-       sb.append( AB.charAt( random().nextInt(AB.length()) ) );
+    for( int i = 0; i < len; i++ ) {
+      sb.append( AB.charAt( random().nextInt(AB.length()) ) );
+    }
     return sb.toString();
  }
-  
+
   @BeforeClass
-  public static void before() throws Exception {    
+  public static void before() throws Exception {
     // solrconfig-multiseg.xml contains the merge policy to restrict merging
     setuptest("solrconfig-multiseg.xml", "schema-ltr.xml");
     // index 400 documents
     for(int i = 0; i<400;i=i+20) {
       assertU(adoc("id", new Integer(i).toString(),   "popularity", "201", "description", "apple is a company " + randomString(i%6+3), "normHits", "0.1"));
       assertU(adoc("id", new Integer(i+1).toString(), "popularity", "201", "description", "d " + randomString(i%6+3), "normHits", "0.11"));
-      
+
       assertU(adoc("id", new Integer(i+2).toString(), "popularity", "201", "description", "apple is a company too " + randomString(i%6+3), "normHits", "0.1"));
       assertU(adoc("id", new Integer(i+3).toString(), "popularity", "201", "description", "new york city is big apple " + randomString(i%6+3), "normHits", "0.11"));
-      
+
       assertU(adoc("id", new Integer(i+6).toString(), "popularity", "301", "description", "function name " + randomString(i%6+3), "normHits", "0.1"));
       assertU(adoc("id", new Integer(i+7).toString(), "popularity", "301", "description", "function " + randomString(i%6+3), "normHits", "0.1"));
-      
+
       assertU(adoc("id", new Integer(i+8).toString(), "popularity", "301", "description", "This is a sample function for testing " + randomString(i%6+3), "normHits", "0.1"));
       assertU(adoc("id", new Integer(i+9).toString(), "popularity", "301", "description", "Function to check out stock prices "+randomString(i%6+3), "normHits", "0.1"));
       assertU(adoc("id", new Integer(i+10).toString(),"popularity", "301", "description", "Some descriptions "+randomString(i%6+3), "normHits", "0.1"));
-      
+
       assertU(adoc("id", new Integer(i+11).toString(), "popularity", "201", "description", "apple apple is a company " + randomString(i%6+3), "normHits", "0.1"));
       assertU(adoc("id", new Integer(i+12).toString(), "popularity", "201", "description", "Big Apple is New York.", "normHits", "0.01"));
       assertU(adoc("id", new Integer(i+13).toString(), "popularity", "201", "description", "New some York is Big. "+ randomString(i%6+3), "normHits", "0.1"));
-      
+
       assertU(adoc("id", new Integer(i+14).toString(), "popularity", "201", "description", "apple apple is a company " + randomString(i%6+3), "normHits", "0.1"));
       assertU(adoc("id", new Integer(i+15).toString(), "popularity", "201", "description", "Big Apple is New York.", "normHits", "0.01"));
       assertU(adoc("id", new Integer(i+16).toString(), "popularity", "401", "description", "barack h", "normHits", "0.0"));
       assertU(adoc("id", new Integer(i+17).toString(), "popularity", "201", "description", "red delicious apple " + randomString(i%6+3), "normHits", "0.1"));
       assertU(adoc("id", new Integer(i+18).toString(), "popularity", "201", "description", "nyc " + randomString(i%6+3), "normHits", "0.11"));
     }
-    
+
     assertU(commit());
-    
+
     loadFeatures("comp_features.json");
   }
-  
+
   @AfterClass
   public static void after() throws Exception {
     aftertest();
   }
-  
+
   @Test
   public void testFeatureExtractionFromMultipleSegments() throws Exception {
-    
+
     final SolrQuery query = new SolrQuery();
     query.setQuery("{!edismax qf='description^1' boost='sum(product(pow(normHits, 0.7), 1600), .1)' v='apple'}");
     // request 100 rows, if any rows are fetched from the second or subsequent segments the tests should succeed if LTRRescorer::extractFeaturesInfo() advances the doc iterator properly
@@ -88,9 +90,9 @@ public class TestFeatureExtractionFromMultipleSegments extends TestRerankBase {
     query.add("fq", "popularity:201");
     query.add("fl", "*, score,id,normHits,description,fv:[features store='feature-store-6' format='dense' efi.user_text='apple']");
     String res = restTestHarness.query("/query" + query.toQueryString());
-   
+
     Map<String,Object> resultJson = (Map<String,Object>) ObjectBuilder.fromJSON(res);
-    
+
     List<Map<String,Object>> docs = (List<Map<String,Object>>)((Map<String,Object>)resultJson.get("response")).get("docs");
     int passCount = 0;
     for (final Map<String,Object> doc : docs) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureLogging.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureLogging.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureLogging.java
index 1086c83..ee8046e 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureLogging.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureLogging.java
@@ -64,7 +64,7 @@ public class TestFeatureLogging extends TestRerankBase {
     query.add("debugQuery", "on");
     query.add("rq", "{!ltr reRankDocs=3 model=sum1}");
 
-    String res = restTestHarness.query("/query" + query.toQueryString());
+    restTestHarness.query("/query" + query.toQueryString());
     assertJQ(
         "/query" + query.toQueryString(),
         "/response/docs/[0]/=={'title':'bloomberg bloomberg ', 'description':'bloomberg','id':'7', 'popularity':2,  '[fv]':'c1:1.0;c2:2.0;c3:3.0;pop:2.0;yesmatch:1.0'}");
@@ -74,7 +74,7 @@ public class TestFeatureLogging extends TestRerankBase {
     query.add("rows", "3");
     query.add("rq", "{!ltr reRankDocs=3 model=sum1}");
 
-    res = restTestHarness.query("/query" + query.toQueryString());
+    restTestHarness.query("/query" + query.toQueryString());
     assertJQ("/query" + query.toQueryString(),
         "/response/docs/[0]/=={'[fv]':'c1:1.0;c2:2.0;c3:3.0;pop:2.0;yesmatch:1.0'}");
     query.remove("rq");
@@ -159,14 +159,14 @@ public class TestFeatureLogging extends TestRerankBase {
 
     query.add("rq", "{!ltr reRankDocs=3 model=sumgroup}");
 
-    String res = restTestHarness.query("/query" + query.toQueryString());
+    restTestHarness.query("/query" + query.toQueryString());
     assertJQ(
         "/query" + query.toQueryString(),
         "/grouped/title/groups/[0]/doclist/docs/[0]/=={'fv':'c1:1.0;c2:2.0;c3:3.0;pop:5.0'}");
 
     query.remove("fl");
     query.add("fl", "fv:[fv fvwt=json]");
-    res = restTestHarness.query("/query" + query.toQueryString());
+    restTestHarness.query("/query" + query.toQueryString());
     assertJQ(
         "/query" + query.toQueryString(),
         "/grouped/title/groups/[0]/doclist/docs/[0]/fv/=={'c1':1.0,'c2':2.0,'c3':3.0,'pop':5.0}");
@@ -252,5 +252,5 @@ public class TestFeatureLogging extends TestRerankBase {
         "/query" + query.toQueryString(),
         "/response/docs/[1]/fv/=='match:0.0;c4:1.0'");
   }
-  
+
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureLtrScoringModel.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureLtrScoringModel.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureLtrScoringModel.java
index aec0a07..5fcebad 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureLtrScoringModel.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureLtrScoringModel.java
@@ -19,7 +19,6 @@ package org.apache.solr.ltr.feature;
 import org.apache.solr.ltr.TestRerankBase;
 import org.apache.solr.ltr.store.rest.ManagedFeatureStore;
 import org.apache.solr.ltr.store.rest.TestManagedFeatureStore;
-import org.apache.solr.ltr.feature.FeatureException;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -56,7 +55,7 @@ public class TestFeatureLtrScoringModel extends TestRerankBase {
   public void getInvalidInstanceTest()
   {
     final String nonExistingClassName = "org.apache.solr.ltr.feature.LOLFeature";
-    final ClassNotFoundException expectedException = 
+    final ClassNotFoundException expectedException =
         new ClassNotFoundException(nonExistingClassName);
     try {
       store.addFeature(TestManagedFeatureStore.createMap("test",
@@ -68,5 +67,5 @@ public class TestFeatureLtrScoringModel extends TestRerankBase {
       assertEquals(expectedException.toString(), rootError.toString());
     }
   }
-  
+
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureStore.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureStore.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureStore.java
index e565c50..0ed0cda 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureStore.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureStore.java
@@ -46,7 +46,7 @@ public class TestFeatureStore extends TestRerankBase {
   }
 
   @Test
-  public void testFeatureStoreAdd() throws FeatureException 
+  public void testFeatureStoreAdd() throws FeatureException
   {
     final FeatureStore fs = fstore.getFeatureStore("fstore-testFeature");
     for (int i = 0; i < 5; i++) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFieldLengthFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFieldLengthFeature.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFieldLengthFeature.java
index 77d9585..6156cd7 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFieldLengthFeature.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFieldLengthFeature.java
@@ -153,6 +153,6 @@ public class TestFieldLengthFeature extends TestRerankBase {
 
 
 
-  
+
 
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFilterSolrFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFilterSolrFeature.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFilterSolrFeature.java
index 0f636f4..3756abe 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFilterSolrFeature.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFilterSolrFeature.java
@@ -85,7 +85,7 @@ public class TestFilterSolrFeature extends TestRerankBase {
     assertJPut(ManagedFeatureStore.REST_END_POINT, feature,
         "/responseHeader/status==500");
   }
-  
+
   @Test
   public void testFeatureNotEqualWhenNormalizerDifferent() throws Exception {
     loadFeatures("fq_features.json"); // features that use filter query
@@ -94,7 +94,7 @@ public class TestFilterSolrFeature extends TestRerankBase {
     query.setQuery("*:*");
     query.add("fl", "*,score");
     query.add("rows", "4");
-  
+
     query.add("rq", "{!ltr reRankDocs=4 model=fqmodel efi.user_query=w2}");
     query.add("fl", "fv:[fv]");
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestNoMatchSolrFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestNoMatchSolrFeature.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestNoMatchSolrFeature.java
index 24c67a6..87b5ef5 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestNoMatchSolrFeature.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestNoMatchSolrFeature.java
@@ -21,8 +21,8 @@ import java.util.Map;
 
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.ltr.TestRerankBase;
-import org.apache.solr.ltr.model.MultipleAdditiveTreesModel;
 import org.apache.solr.ltr.model.LinearModel;
+import org.apache.solr.ltr.model.MultipleAdditiveTreesModel;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestRankingFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestRankingFeature.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestRankingFeature.java
index 787fa4c..1e5e551 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestRankingFeature.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestRankingFeature.java
@@ -52,8 +52,8 @@ public class TestRankingFeature extends TestRerankBase {
   @AfterClass
   public static void after() throws Exception {
     aftertest();
-  }  
-  
+  }
+
   @Test
   public void testRankingSolrFeature() throws Exception {
     // before();
@@ -112,12 +112,12 @@ public class TestRankingFeature extends TestRerankBase {
     query.remove("rq");
     query.add("rq", "{!ltr model=powdesS-model reRankDocs=4}");
 
-    assertJQ("/query" + query.toQueryString(), 
+    assertJQ("/query" + query.toQueryString(),
         "/error/msg/=='"+FeatureException.class.getCanonicalName()+": " +
         "java.lang.UnsupportedOperationException: " +
         "Unable to extract feature for powdesS'");
     // aftertest();
 
   }
-  
+
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScoreWithQ.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScoreWithQ.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScoreWithQ.java
index 01eb484..b4655f0 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScoreWithQ.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScoreWithQ.java
@@ -51,8 +51,8 @@ public class TestUserTermScoreWithQ extends TestRerankBase {
   @AfterClass
   public static void after() throws Exception {
     aftertest();
-  }  
-  
+  }
+
   @Test
   public void testUserTermScoreWithQ() throws Exception {
     // before();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScorerQuery.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScorerQuery.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScorerQuery.java
index 1a6d505..71f94db 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScorerQuery.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScorerQuery.java
@@ -51,8 +51,8 @@ public class TestUserTermScorerQuery extends TestRerankBase  {
   @AfterClass
   public static void after() throws Exception {
     aftertest();
-  }  
-  
+  }
+
   @Test
   public void testUserTermScorerQuery() throws Exception {
     // before();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScorereQDF.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScorereQDF.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScorereQDF.java
index fdbeed8..4bd7152 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScorereQDF.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScorereQDF.java
@@ -51,8 +51,8 @@ public class TestUserTermScorereQDF extends TestRerankBase {
   @AfterClass
   public static void after() throws Exception {
     aftertest();
-  }  
-  
+  }
+
   @Test
   public void testUserTermScorerQWithDF() throws Exception {
     // before();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestValueFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestValueFeature.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestValueFeature.java
index 6c9cf0e..a9f3983 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestValueFeature.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestValueFeature.java
@@ -49,7 +49,7 @@ public class TestValueFeature extends TestRerankBase {
 
   @Test
   public void testValueFeatureWithEmptyValue() throws Exception {
-    final RuntimeException expectedException = 
+    final RuntimeException expectedException =
         new RuntimeException("mismatch: '0'!='500' @ responseHeader/status");
     try {
         loadFeature("c2", ValueFeature.class.getCanonicalName(), "{\"value\":\"\"}");
@@ -61,7 +61,7 @@ public class TestValueFeature extends TestRerankBase {
 
   @Test
   public void testValueFeatureWithWhitespaceValue() throws Exception {
-    final RuntimeException expectedException = 
+    final RuntimeException expectedException =
         new RuntimeException("mismatch: '0'!='500' @ responseHeader/status");
     try {
         loadFeature("c2", ValueFeature.class.getCanonicalName(),
@@ -111,7 +111,7 @@ public class TestValueFeature extends TestRerankBase {
     assertJQ("/query" + query.toQueryString(), "/response/docs/[2]/score==2.0");
     assertJQ("/query" + query.toQueryString(), "/response/docs/[3]/score==2.0");
   }
-  
+
 
   @Test
   public void testValueFeatureImplicitlyNotRequiredShouldReturnOkStatusCode() throws Exception {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/model/TestLinearModel.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/model/TestLinearModel.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/model/TestLinearModel.java
index e066ea3..e8ee224 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/model/TestLinearModel.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/model/TestLinearModel.java
@@ -23,12 +23,8 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.solr.common.SolrException;
-import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.ltr.TestRerankBase;
 import org.apache.solr.ltr.feature.Feature;
-import org.apache.solr.ltr.model.LTRScoringModel;
-import org.apache.solr.ltr.model.ModelException;
-import org.apache.solr.ltr.model.LinearModel;
 import org.apache.solr.ltr.norm.IdentityNormalizer;
 import org.apache.solr.ltr.norm.Normalizer;
 import org.apache.solr.ltr.store.FeatureStore;
@@ -70,7 +66,7 @@ public class TestLinearModel extends TestRerankBase {
     Map<String,Object> params = new HashMap<String,Object>();
     final List<Feature> features = getFeatures(new String[] {
         "constant1", "constant5"});
-    final List<Normalizer> norms = 
+    final List<Normalizer> norms =
         new ArrayList<Normalizer>(
             Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
     params.put("weights", weights);
@@ -85,15 +81,15 @@ public class TestLinearModel extends TestRerankBase {
 
   @Test
   public void nullFeatureWeightsTest() {
-    final ModelException expectedException = 
+    final ModelException expectedException =
         new ModelException("Model test2 doesn't contain any weights");
     try {
-      final List<Feature> features = getFeatures(new String[] 
+      final List<Feature> features = getFeatures(new String[]
           {"constant1", "constant5"});
-      final List<Normalizer> norms = 
+      final List<Normalizer> norms =
         new ArrayList<Normalizer>(
             Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
-      final LTRScoringModel ltrScoringModel = createLinearModel("test2",
+      createLinearModel("test2",
           features, norms, "test", fstore.getFeatures(), null);
       fail("unexpectedly got here instead of catching "+expectedException);
     } catch (ModelException actualException) {
@@ -103,13 +99,13 @@ public class TestLinearModel extends TestRerankBase {
 
   @Test
   public void existingNameTest() {
-    final SolrException expectedException = 
-        new SolrException(ErrorCode.BAD_REQUEST,
+    final SolrException expectedException =
+        new SolrException(SolrException.ErrorCode.BAD_REQUEST,
             ModelException.class.getCanonicalName()+": model 'test3' already exists. Please use a different name");
     try {
-      final List<Feature> features = getFeatures(new String[] 
+      final List<Feature> features = getFeatures(new String[]
           {"constant1", "constant5"});
-      final List<Normalizer> norms = 
+      final List<Normalizer> norms =
         new ArrayList<Normalizer>(
             Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
       final Map<String,Object> weights = new HashMap<>();
@@ -133,12 +129,12 @@ public class TestLinearModel extends TestRerankBase {
 
   @Test
   public void duplicateFeatureTest() {
-    final ModelException expectedException = 
+    final ModelException expectedException =
         new ModelException("duplicated feature constant1 in model test4");
     try {
-      final List<Feature> features = getFeatures(new String[] 
+      final List<Feature> features = getFeatures(new String[]
           {"constant1", "constant1"});
-      final List<Normalizer> norms = 
+      final List<Normalizer> norms =
         new ArrayList<Normalizer>(
             Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
       final Map<String,Object> weights = new HashMap<>();
@@ -160,12 +156,12 @@ public class TestLinearModel extends TestRerankBase {
 
   @Test
   public void missingFeatureWeightTest() {
-    final ModelException expectedException = 
+    final ModelException expectedException =
         new ModelException("Model test5 lacks weight(s) for [constant5]");
     try {
-      final List<Feature> features = getFeatures(new String[] 
+      final List<Feature> features = getFeatures(new String[]
           {"constant1", "constant5"});
-      final List<Normalizer> norms = 
+      final List<Normalizer> norms =
         new ArrayList<Normalizer>(
             Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
       final Map<String,Object> weights = new HashMap<>();
@@ -174,7 +170,7 @@ public class TestLinearModel extends TestRerankBase {
 
       Map<String,Object> params = new HashMap<String,Object>();
       params.put("weights", weights);
-      final LTRScoringModel ltrScoringModel = createLinearModel("test5",
+      createLinearModel("test5",
           features, norms, "test", fstore.getFeatures(),
               params);
       fail("unexpectedly got here instead of catching "+expectedException);
@@ -189,7 +185,7 @@ public class TestLinearModel extends TestRerankBase {
         new ModelException("no features declared for model test6");
     try {
       final List<Feature> features = getFeatures(new String[] {});
-      final List<Normalizer> norms = 
+      final List<Normalizer> norms =
         new ArrayList<Normalizer>(
             Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
       final Map<String,Object> weights = new HashMap<>();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/model/TestMultipleAdditiveTreesModel.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/model/TestMultipleAdditiveTreesModel.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/model/TestMultipleAdditiveTreesModel.java
index 3414dc8..13f6c6b 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/model/TestMultipleAdditiveTreesModel.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/model/TestMultipleAdditiveTreesModel.java
@@ -21,7 +21,6 @@ package org.apache.solr.ltr.model;
 import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.ltr.TestRerankBase;
-import org.apache.solr.ltr.model.ModelException;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Ignore;
@@ -52,7 +51,7 @@ public class TestMultipleAdditiveTreesModel extends TestRerankBase {
     aftertest();
   }
 
-  
+
   @Test
   public void testMultipleAdditiveTreesScoringWithAndWithoutEfiFeatureMatches() throws Exception {
     final SolrQuery query = new SolrQuery();
@@ -124,7 +123,7 @@ public class TestMultipleAdditiveTreesModel extends TestRerankBase {
 
   @Test
   public void multipleAdditiveTreesTestNoParams() throws Exception {
-    final ModelException expectedException = 
+    final ModelException expectedException =
         new ModelException("no trees declared for model multipleadditivetreesmodel_no_params");
     try {
         createModelFromFiles("multipleadditivetreesmodel_no_params.json",
@@ -139,7 +138,7 @@ public class TestMultipleAdditiveTreesModel extends TestRerankBase {
 
   @Test
   public void multipleAdditiveTreesTestEmptyParams() throws Exception {
-    final ModelException expectedException = 
+    final ModelException expectedException =
         new ModelException("no trees declared for model multipleadditivetreesmodel_no_trees");
     try {
         createModelFromFiles("multipleadditivetreesmodel_no_trees.json",
@@ -153,7 +152,7 @@ public class TestMultipleAdditiveTreesModel extends TestRerankBase {
 
   @Test
   public void multipleAdditiveTreesTestNoWeight() throws Exception {
-    final ModelException expectedException = 
+    final ModelException expectedException =
         new ModelException("MultipleAdditiveTreesModel tree doesn't contain a weight");
     try {
         createModelFromFiles("multipleadditivetreesmodel_no_weight.json",
@@ -167,7 +166,7 @@ public class TestMultipleAdditiveTreesModel extends TestRerankBase {
 
   @Test
   public void multipleAdditiveTreesTestTreesParamDoesNotContatinTree() throws Exception {
-    final ModelException expectedException = 
+    final ModelException expectedException =
         new ModelException("MultipleAdditiveTreesModel tree doesn't contain a tree");
     try {
         createModelFromFiles("multipleadditivetreesmodel_no_tree.json",
@@ -181,7 +180,7 @@ public class TestMultipleAdditiveTreesModel extends TestRerankBase {
 
   @Test
   public void multipleAdditiveTreesTestNoFeaturesSpecified() throws Exception {
-    final ModelException expectedException = 
+    final ModelException expectedException =
         new ModelException("no features declared for model multipleadditivetreesmodel_no_features");
     try {
         createModelFromFiles("multipleadditivetreesmodel_no_features.json",
@@ -194,7 +193,7 @@ public class TestMultipleAdditiveTreesModel extends TestRerankBase {
 
   @Test
   public void multipleAdditiveTreesTestNoRight() throws Exception {
-    final ModelException expectedException = 
+    final ModelException expectedException =
         new ModelException("MultipleAdditiveTreesModel tree node is missing right");
     try {
         createModelFromFiles("multipleadditivetreesmodel_no_right.json",
@@ -208,7 +207,7 @@ public class TestMultipleAdditiveTreesModel extends TestRerankBase {
 
   @Test
   public void multipleAdditiveTreesTestNoLeft() throws Exception {
-    final ModelException expectedException = 
+    final ModelException expectedException =
         new ModelException("MultipleAdditiveTreesModel tree node is missing left");
     try {
         createModelFromFiles("multipleadditivetreesmodel_no_left.json",
@@ -222,7 +221,7 @@ public class TestMultipleAdditiveTreesModel extends TestRerankBase {
 
   @Test
   public void multipleAdditiveTreesTestNoThreshold() throws Exception {
-    final ModelException expectedException = 
+    final ModelException expectedException =
         new ModelException("MultipleAdditiveTreesModel tree node is missing threshold");
     try {
         createModelFromFiles("multipleadditivetreesmodel_no_threshold.json",
@@ -236,7 +235,7 @@ public class TestMultipleAdditiveTreesModel extends TestRerankBase {
 
   @Test
   public void multipleAdditiveTreesTestMissingTreeFeature() throws Exception {
-    final ModelException expectedException = 
+    final ModelException expectedException =
         new ModelException("MultipleAdditiveTreesModel tree node is leaf with left=-100.0 and right=75.0");
     try {
         createModelFromFiles("multipleadditivetreesmodel_no_feature.json",

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/norm/TestMinMaxNormalizer.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/norm/TestMinMaxNormalizer.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/norm/TestMinMaxNormalizer.java
index c569f3a..055b3bc 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/norm/TestMinMaxNormalizer.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/norm/TestMinMaxNormalizer.java
@@ -83,7 +83,7 @@ public class TestMinMaxNormalizer {
     final Map<String,Object> params = new HashMap<String,Object>();
     params.put("min", "10.0f");
     params.put("max", "10.0f");
-    final NormalizerException expectedException = 
+    final NormalizerException expectedException =
         new NormalizerException("MinMax Normalizer delta must not be zero "
             + "| min = 10.0,max = 10.0,delta = 0.0");
     try {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/norm/TestStandardNormalizer.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/norm/TestStandardNormalizer.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/norm/TestStandardNormalizer.java
index fa8fa67..10fa972 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/norm/TestStandardNormalizer.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/norm/TestStandardNormalizer.java
@@ -54,7 +54,7 @@ public class TestStandardNormalizer {
   public void testInvalidSTD() {
     final Map<String,Object> params = new HashMap<String,Object>();
     params.put("std", "0f");
-    final NormalizerException expectedException = 
+    final NormalizerException expectedException =
         new NormalizerException("Standard Normalizer standard deviation must be positive "
             + "| avg = 0.0,std = 0.0");
     try {
@@ -71,7 +71,7 @@ public class TestStandardNormalizer {
   public void testInvalidSTD2() {
     final Map<String,Object> params = new HashMap<String,Object>();
     params.put("std", "-1f");
-    final NormalizerException expectedException = 
+    final NormalizerException expectedException =
         new NormalizerException("Standard Normalizer standard deviation must be positive "
             + "| avg = 0.0,std = -1.0");
     try {
@@ -89,7 +89,7 @@ public class TestStandardNormalizer {
     final Map<String,Object> params = new HashMap<String,Object>();
     params.put("avg", "1f");
     params.put("std", "0f");
-    final NormalizerException expectedException = 
+    final NormalizerException expectedException =
         new NormalizerException("Standard Normalizer standard deviation must be positive "
             + "| avg = 1.0,std = 0.0");
     try {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/store/rest/TestModelManager.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/store/rest/TestModelManager.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/store/rest/TestModelManager.java
index 2e5a628..131ac02 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/store/rest/TestModelManager.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/store/rest/TestModelManager.java
@@ -23,8 +23,6 @@ import org.apache.solr.ltr.TestRerankBase;
 import org.apache.solr.ltr.feature.FieldValueFeature;
 import org.apache.solr.ltr.feature.ValueFeature;
 import org.apache.solr.ltr.model.LinearModel;
-import org.apache.solr.ltr.store.rest.ManagedFeatureStore;
-import org.apache.solr.ltr.store.rest.ManagedModelStore;
 import org.apache.solr.rest.ManagedResource;
 import org.apache.solr.rest.ManagedResourceStorage;
 import org.apache.solr.rest.RestManager;
@@ -109,7 +107,7 @@ public class TestModelManager extends TestRerankBase {
         "/responseHeader/status==0");
 
     final String fieldValueFeatureClassName = FieldValueFeature.class.getCanonicalName();
-    
+
     // Add bad feature (wrong params)_
     final String badfeature = "{\"name\": \"fvalue\", \"class\": \""+fieldValueFeatureClassName+"\", \"params\": {\"value\": 1} }";
     assertJPut(ManagedFeatureStore.REST_END_POINT, badfeature,

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/store/rest/TestModelManagerPersistence.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/store/rest/TestModelManagerPersistence.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/store/rest/TestModelManagerPersistence.java
index 18baeac..a6c79e9 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/store/rest/TestModelManagerPersistence.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/store/rest/TestModelManagerPersistence.java
@@ -16,8 +16,8 @@
  */
 package org.apache.solr.ltr.store.rest;
 
-import java.util.Map;
 import java.util.ArrayList;
+import java.util.Map;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.solr.SolrTestCaseJ4.SuppressSSL;
@@ -80,20 +80,20 @@ public class TestModelManagerPersistence extends TestRerankBase {
         .readFileToString(mstorefile, "UTF-8");
 
     //check feature/model stores on deletion
-    final ArrayList<Object> fStore = (ArrayList<Object>) ((Map<String,Object>) 
+    final ArrayList<Object> fStore = (ArrayList<Object>) ((Map<String,Object>)
         ObjectBuilder.fromJSON(fstorecontent)).get("managedList");
     for (int idx = 0;idx < fStore.size(); ++ idx) {
       String store = (String) ((Map<String,Object>)fStore.get(idx)).get("store");
       assertTrue(store.equals("test") || store.equals("test2") || store.equals("test1"));
     }
 
-    final ArrayList<Object> mStore = (ArrayList<Object>) ((Map<String,Object>) 
+    final ArrayList<Object> mStore = (ArrayList<Object>) ((Map<String,Object>)
         ObjectBuilder.fromJSON(mstorecontent)).get("managedList");
     for (int idx = 0;idx < mStore.size(); ++ idx) {
       String store = (String) ((Map<String,Object>)mStore.get(idx)).get("store");
       assertTrue(store.equals("test") || store.equals("test1"));
     }
-    
+
     assertJDelete(ManagedFeatureStore.REST_END_POINT + "/test2",
         "/responseHeader/status==0");
     assertJDelete(ManagedModelStore.REST_END_POINT + "/test-model2",
@@ -104,7 +104,7 @@ public class TestModelManagerPersistence extends TestRerankBase {
         "/models/[0]/name=='test-model'");
     restTestHarness.reload();
     assertJQ(ManagedFeatureStore.REST_END_POINT + "/test2",
-        "/features/==[]");  
+        "/features/==[]");
     assertJQ(ManagedModelStore.REST_END_POINT + "/test-model2",
         "/models/[0]/name=='test-model'");
 


[2/2] lucene-solr:jira/solr-8542-v2: SOLR-8542: cleanups (thank you IDE) + tweaks

Posted by cp...@apache.org.
SOLR-8542: cleanups (thank you IDE) + tweaks

($ = cleanup flagged this up)

* remove unused locals and privates

* make privates final where possible + LTRThreadModule lacked an accessor$

* always use blocks in if/while/for/do statements

* remove trailing whitespace

* correct indentation (for java but not for test) + FeatureLogger StringBuilder append tweak$

* organise imports (resulted in removal of some)

* within solr/contrib/ltr be consistent (for clarity) about 'import Outer.Inner' vs. 'Outer.Inner at point of use'
  e.g. SolrException.ErrorCode, Map.Entry, LTRScoringQuery.Something etc.
  with TODO$ identified as a result: SuppressSSL and SuppressCodecs is used in many of the tests (are they needed?)


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/4e444db6
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/4e444db6
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/4e444db6

Branch: refs/heads/jira/solr-8542-v2
Commit: 4e444db65253919120772db1722aed493741a1d5
Parents: f91f33b
Author: Christine Poerschke <cp...@apache.org>
Authored: Wed Oct 26 10:39:47 2016 -0500
Committer: Christine Poerschke <cp...@apache.org>
Committed: Wed Oct 26 13:01:21 2016 -0500

----------------------------------------------------------------------
 .../java/org/apache/solr/ltr/FeatureLogger.java |  38 +++---
 .../java/org/apache/solr/ltr/LTRRescorer.java   |  24 ++--
 .../org/apache/solr/ltr/LTRScoringQuery.java    | 135 +++++++++----------
 .../org/apache/solr/ltr/LTRThreadModule.java    |   4 +
 .../org/apache/solr/ltr/feature/Feature.java    |  34 ++---
 .../solr/ltr/feature/FieldLengthFeature.java    |   8 +-
 .../solr/ltr/feature/FieldValueFeature.java     |  10 +-
 .../solr/ltr/feature/OriginalScoreFeature.java  |   8 +-
 .../apache/solr/ltr/feature/SolrFeature.java    |  20 ++-
 .../apache/solr/ltr/feature/ValueFeature.java   |  19 +--
 .../apache/solr/ltr/model/LTRScoringModel.java  |  14 +-
 .../org/apache/solr/ltr/model/LinearModel.java  |   6 +-
 .../ltr/model/MultipleAdditiveTreesModel.java   |   6 +-
 .../apache/solr/ltr/norm/MinMaxNormalizer.java  |   9 +-
 .../org/apache/solr/ltr/norm/Normalizer.java    |   6 +-
 .../solr/ltr/norm/StandardNormalizer.java       |   9 +-
 .../ltr/store/rest/ManagedFeatureStore.java     |  14 +-
 .../solr/ltr/store/rest/ManagedModelStore.java  |  22 ++-
 .../LTRFeatureLoggerTransformerFactory.java     |  26 ++--
 .../solr/response/transform/package-info.java   |   4 +-
 .../apache/solr/search/LTRQParserPlugin.java    |  38 +++---
 .../org/apache/solr/search/package-info.java    |   4 +-
 .../org/apache/solr/ltr/TestLTROnSolrCloud.java |  17 +--
 .../apache/solr/ltr/TestLTRQParserExplain.java  |   5 +-
 .../apache/solr/ltr/TestLTRQParserPlugin.java   |  35 +++--
 .../solr/ltr/TestLTRReRankingPipeline.java      |  40 +++---
 .../apache/solr/ltr/TestLTRScoringQuery.java    |  31 +++--
 .../org/apache/solr/ltr/TestLTRWithFacet.java   |   3 +-
 .../org/apache/solr/ltr/TestLTRWithSort.java    |   5 +-
 .../solr/ltr/TestParallelWeightCreation.java    |  16 +--
 .../org/apache/solr/ltr/TestRerankBase.java     |  23 ++--
 .../solr/ltr/TestSelectiveWeightCreation.java   |  41 +++---
 .../ltr/feature/TestEdisMaxSolrFeature.java     |   6 +-
 .../ltr/feature/TestExternalValueFeatures.java  |   2 +-
 ...stFeatureExtractionFromMultipleSegments.java |  36 ++---
 .../solr/ltr/feature/TestFeatureLogging.java    |  10 +-
 .../ltr/feature/TestFeatureLtrScoringModel.java |   5 +-
 .../solr/ltr/feature/TestFeatureStore.java      |   2 +-
 .../ltr/feature/TestFieldLengthFeature.java     |   2 +-
 .../solr/ltr/feature/TestFilterSolrFeature.java |   4 +-
 .../ltr/feature/TestNoMatchSolrFeature.java     |   2 +-
 .../solr/ltr/feature/TestRankingFeature.java    |   8 +-
 .../ltr/feature/TestUserTermScoreWithQ.java     |   4 +-
 .../ltr/feature/TestUserTermScorerQuery.java    |   4 +-
 .../ltr/feature/TestUserTermScorereQDF.java     |   4 +-
 .../solr/ltr/feature/TestValueFeature.java      |   6 +-
 .../apache/solr/ltr/model/TestLinearModel.java  |  38 +++---
 .../model/TestMultipleAdditiveTreesModel.java   |  21 ++-
 .../solr/ltr/norm/TestMinMaxNormalizer.java     |   2 +-
 .../solr/ltr/norm/TestStandardNormalizer.java   |   6 +-
 .../solr/ltr/store/rest/TestModelManager.java   |   4 +-
 .../store/rest/TestModelManagerPersistence.java |  10 +-
 52 files changed, 409 insertions(+), 441 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/FeatureLogger.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/FeatureLogger.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/FeatureLogger.java
index 81efc81..a5afd05 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/FeatureLogger.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/FeatureLogger.java
@@ -21,7 +21,6 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.solr.ltr.LTRScoringQuery.FeatureInfo;
 import org.apache.solr.search.SolrIndexSearcher;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -39,11 +38,11 @@ public abstract class FeatureLogger<FV_TYPE> {
 
   protected enum FeatureFormat {DENSE, SPARSE};
   protected final FeatureFormat featureFormat;
-  
+
   protected FeatureLogger(FeatureFormat f) {
     this.featureFormat = f;
   }
-  
+
   /**
    * Log will be called every time that the model generates the feature values
    * for a document and a query.
@@ -51,14 +50,14 @@ public abstract class FeatureLogger<FV_TYPE> {
    * @param docid
    *          Solr document id whose features we are saving
    * @param featuresInfo
-   *          List of all the FeatureInfo objects which contain name and value
+   *          List of all the {@link LTRScoringQuery.FeatureInfo} objects which contain name and value
    *          for all the features triggered by the result set
    * @return true if the logger successfully logged the features, false
    *         otherwise.
    */
 
   public boolean log(int docid, LTRScoringQuery scoringQuery,
-      SolrIndexSearcher searcher, FeatureInfo[] featuresInfo) {
+      SolrIndexSearcher searcher, LTRScoringQuery.FeatureInfo[] featuresInfo) {
     final FV_TYPE featureVector = makeFeatureVector(featuresInfo);
     if (featureVector == null) {
       return false;
@@ -76,7 +75,7 @@ public abstract class FeatureLogger<FV_TYPE> {
    * format will be selected.
    * 'featureFormat' param: 'dense' will write features in dense format,
    * 'sparse' will write the features in sparse format, null or empty will
-   * default to 'sparse'  
+   * default to 'sparse'
    *
    *
    * @return a feature logger for the format specified.
@@ -108,7 +107,7 @@ public abstract class FeatureLogger<FV_TYPE> {
 
   }
 
-  public abstract FV_TYPE makeFeatureVector(FeatureInfo[] featuresInfo);
+  public abstract FV_TYPE makeFeatureVector(LTRScoringQuery.FeatureInfo[] featuresInfo);
 
   private static int fvCacheKey(LTRScoringQuery scoringQuery, int docid) {
     return  scoringQuery.hashCode() + (31 * docid);
@@ -121,7 +120,7 @@ public abstract class FeatureLogger<FV_TYPE> {
    *          Solr document id
    * @return String representation of the list of features calculated for docid
    */
-  
+
   public FV_TYPE getFeatureVector(int docid, LTRScoringQuery scoringQuery,
       SolrIndexSearcher searcher) {
     return (FV_TYPE) searcher.cacheLookup(QUERY_FV_CACHE_NAME, fvCacheKey(scoringQuery, docid));
@@ -133,14 +132,14 @@ public abstract class FeatureLogger<FV_TYPE> {
     public MapFeatureLogger(FeatureFormat f) {
       super(f);
     }
-    
+
     @Override
-    public Map<String,Float> makeFeatureVector(FeatureInfo[] featuresInfo) {
+    public Map<String,Float> makeFeatureVector(LTRScoringQuery.FeatureInfo[] featuresInfo) {
       boolean isDense = featureFormat.equals(FeatureFormat.DENSE);
       Map<String,Float> hashmap = Collections.emptyMap();
       if (featuresInfo.length > 0) {
         hashmap = new HashMap<String,Float>(featuresInfo.length);
-        for (FeatureInfo featInfo:featuresInfo){ 
+        for (LTRScoringQuery.FeatureInfo featInfo:featuresInfo){
           if (featInfo.isUsed() || isDense){
             hashmap.put(featInfo.getName(), featInfo.getValue());
           }
@@ -155,7 +154,7 @@ public abstract class FeatureLogger<FV_TYPE> {
     StringBuilder sb = new StringBuilder(500);
     char keyValueSep = ':';
     char featureSep = ';';
-    
+
     public CSVFeatureLogger(FeatureFormat f) {
       super(f);
     }
@@ -171,14 +170,15 @@ public abstract class FeatureLogger<FV_TYPE> {
     }
 
     @Override
-    public String makeFeatureVector(FeatureInfo[] featuresInfo) {
+    public String makeFeatureVector(LTRScoringQuery.FeatureInfo[] featuresInfo) {
       boolean isDense = featureFormat.equals(FeatureFormat.DENSE);
-      for (FeatureInfo featInfo:featuresInfo) {
-          if (featInfo.isUsed() || isDense){
-             sb.append(featInfo.getName()).append(keyValueSep)
-                 .append(featInfo.getValue());
-             sb.append(featureSep);
-          }
+      for (LTRScoringQuery.FeatureInfo featInfo:featuresInfo) {
+        if (featInfo.isUsed() || isDense){
+          sb.append(featInfo.getName())
+          .append(keyValueSep)
+          .append(featInfo.getValue())
+          .append(featureSep);
+        }
       }
 
       final String features = (sb.length() > 0 ? sb.substring(0,

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRRescorer.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRRescorer.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRRescorer.java
index 607a9c8..27223b7 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRRescorer.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRRescorer.java
@@ -29,8 +29,6 @@ import org.apache.lucene.search.Rescorer;
 import org.apache.lucene.search.ScoreDoc;
 import org.apache.lucene.search.TopDocs;
 import org.apache.lucene.search.Weight;
-import org.apache.solr.ltr.LTRScoringQuery.ModelWeight;
-import org.apache.solr.ltr.LTRScoringQuery.ModelWeight.ModelScorer;
 import org.apache.solr.search.SolrIndexSearcher;
 
 
@@ -115,12 +113,12 @@ public class LTRRescorer extends Rescorer {
     topN = Math.min(topN, firstPassTopDocs.totalHits);
     final ScoreDoc[] reranked = new ScoreDoc[topN];
     final List<LeafReaderContext> leaves = searcher.getIndexReader().leaves();
-    final ModelWeight modelWeight = (ModelWeight) searcher
+    final LTRScoringQuery.ModelWeight modelWeight = (LTRScoringQuery.ModelWeight) searcher
         .createNormalizedWeight(scoringQuery, true);
 
     final SolrIndexSearcher solrIndexSearch = (SolrIndexSearcher) searcher;
     scoreFeatures(solrIndexSearch, firstPassTopDocs,topN, modelWeight, hits, leaves, reranked);
-    // Must sort all documents that we reranked, and then select the top 
+    // Must sort all documents that we reranked, and then select the top
     Arrays.sort(reranked, new Comparator<ScoreDoc>() {
       @Override
       public int compare(ScoreDoc a, ScoreDoc b) {
@@ -139,16 +137,16 @@ public class LTRRescorer extends Rescorer {
 
     return new TopDocs(firstPassTopDocs.totalHits, reranked, reranked[0].score);
   }
-  
+
   public void scoreFeatures(SolrIndexSearcher solrIndexSearch, TopDocs firstPassTopDocs,
-      int topN, ModelWeight modelWeight, ScoreDoc[] hits, List<LeafReaderContext> leaves,
+      int topN, LTRScoringQuery.ModelWeight modelWeight, ScoreDoc[] hits, List<LeafReaderContext> leaves,
       ScoreDoc[] reranked) throws IOException {
-    
+
     int readerUpto = -1;
     int endDoc = 0;
     int docBase = 0;
 
-    ModelScorer scorer = null;
+    LTRScoringQuery.ModelWeight.ModelScorer scorer = null;
     int hitUpto = 0;
     final FeatureLogger<?> featureLogger = scoringQuery.getFeatureLogger();
 
@@ -166,11 +164,11 @@ public class LTRRescorer extends Rescorer {
         docBase = readerContext.docBase;
         scorer = modelWeight.scorer(readerContext);
       }
-      // Scorer for a ModelWeight should never be null since we always have to
+      // Scorer for a LTRScoringQuery.ModelWeight should never be null since we always have to
       // call score
       // even if no feature scorers match, since a model might use that info to
       // return a
-      // non-zero score. Same applies for the case of advancing a ModelScorer
+      // non-zero score. Same applies for the case of advancing a LTRScoringQuery.ModelWeight.ModelScorer
       // past the target
       // doc since the model algorithm still needs to compute a potentially
       // non-zero score from blank features.
@@ -226,15 +224,15 @@ public class LTRRescorer extends Rescorer {
     return modelWeight.explain(context, deBasedDoc);
   }
 
-  public static LTRScoringQuery.FeatureInfo[] extractFeaturesInfo(ModelWeight modelWeight,
+  public static LTRScoringQuery.FeatureInfo[] extractFeaturesInfo(LTRScoringQuery.ModelWeight modelWeight,
       int docid,
       Float originalDocScore,
       List<LeafReaderContext> leafContexts)
-      throws IOException {
+          throws IOException {
     final int n = ReaderUtil.subIndex(docid, leafContexts);
     final LeafReaderContext atomicContext = leafContexts.get(n);
     final int deBasedDoc = docid - atomicContext.docBase;
-    final ModelScorer r = modelWeight.scorer(atomicContext);
+    final LTRScoringQuery.ModelWeight.ModelScorer r = modelWeight.scorer(atomicContext);
     if ( (r == null) || (r.iterator().advance(deBasedDoc) != deBasedDoc) ) {
       return new LTRScoringQuery.FeatureInfo[0];
     } else {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
index 71a7ace..778e2be 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
@@ -24,7 +24,6 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
-import java.util.Map.Entry;
 import java.util.Set;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Future;
@@ -44,8 +43,6 @@ import org.apache.lucene.search.Query;
 import org.apache.lucene.search.Scorer;
 import org.apache.lucene.search.Weight;
 import org.apache.solr.ltr.feature.Feature;
-import org.apache.solr.ltr.feature.Feature.FeatureWeight;
-import org.apache.solr.ltr.feature.Feature.FeatureWeight.FeatureScorer;
 import org.apache.solr.ltr.model.LTRScoringModel;
 import org.apache.solr.request.SolrQueryRequest;
 import org.slf4j.Logger;
@@ -83,8 +80,8 @@ public class LTRScoringQuery extends Query {
     this(ltrScoringModel, Collections.<String, String[]>emptyMap(), extractAllFeatures, null);
   }
 
-  public LTRScoringQuery(LTRScoringModel ltrScoringModel, 
-      Map<String, String[]> externalFeatureInfo, 
+  public LTRScoringQuery(LTRScoringModel ltrScoringModel,
+      Map<String, String[]> externalFeatureInfo,
       boolean extractAllFeatures, LTRThreadModule ltrThreadMgr) {
     this.ltrScoringModel = ltrScoringModel;
     this.efi = externalFeatureInfo;
@@ -128,7 +125,7 @@ public class LTRScoringQuery extends Query {
   public SolrQueryRequest getRequest() {
     return request;
   }
-  
+
   @Override
   public int hashCode() {
     final int prime = 31;
@@ -140,7 +137,7 @@ public class LTRScoringQuery extends Query {
       result = (prime * result) + 0;
     }
     else {
-      for (final Entry<String,String[]> entry : efi.entrySet()) {
+      for (final Map.Entry<String,String[]> entry : efi.entrySet()) {
         final String key = entry.getKey();
         final String[] values = entry.getValue();
         result = (prime * result) + key.hashCode();
@@ -178,7 +175,7 @@ public class LTRScoringQuery extends Query {
       if (other.efi == null || efi.size() != other.efi.size()) {
         return false;
       }
-      for(final Entry<String,String[]> entry : efi.entrySet()) {
+      for(final Map.Entry<String,String[]> entry : efi.entrySet()) {
         final String key = entry.getKey();
         final String[] otherValues = other.efi.get(key);
         if (otherValues == null || !Arrays.equals(otherValues,entry.getValue())) {
@@ -191,11 +188,11 @@ public class LTRScoringQuery extends Query {
 
   @Override
   public ModelWeight createWeight(IndexSearcher searcher, boolean needsScores, float boost)
-      throws IOException {   
+      throws IOException {
     final Collection<Feature> modelFeatures = ltrScoringModel.getFeatures();
     final Collection<Feature> allFeatures = ltrScoringModel.getAllFeatures();
     int modelFeatSize = modelFeatures.size();
-   
+
     Collection<Feature> features = null;
     if (this.extractAllFeatures) {
       features = allFeatures;
@@ -203,19 +200,19 @@ public class LTRScoringQuery extends Query {
     else{
       features =  modelFeatures;
     }
-    final FeatureWeight[] extractedFeatureWeights = new FeatureWeight[features.size()];
-    final FeatureWeight[] modelFeaturesWeights = new FeatureWeight[modelFeatSize];
-    List<FeatureWeight > featureWeights = new ArrayList<>(features.size());
-    
+    final Feature.FeatureWeight[] extractedFeatureWeights = new Feature.FeatureWeight[features.size()];
+    final Feature.FeatureWeight[] modelFeaturesWeights = new Feature.FeatureWeight[modelFeatSize];
+    List<Feature.FeatureWeight > featureWeights = new ArrayList<>(features.size());
+
     if (querySemaphore == null) {
-       createWeights(searcher, needsScores, boost, featureWeights, features);
+      createWeights(searcher, needsScores, boost, featureWeights, features);
     }
     else{
-       createWeightsParallel(searcher, needsScores, boost, featureWeights, features);
+      createWeightsParallel(searcher, needsScores, boost, featureWeights, features);
     }
     int i=0, j = 0;
     if (this.extractAllFeatures) {
-      for (final FeatureWeight fw : featureWeights) {
+      for (final Feature.FeatureWeight fw : featureWeights) {
         extractedFeatureWeights[i++] = fw;
       }
       for (final Feature f : modelFeatures){
@@ -223,31 +220,31 @@ public class LTRScoringQuery extends Query {
       }
     }
     else{
-      for (final FeatureWeight fw: featureWeights){
+      for (final Feature.FeatureWeight fw: featureWeights){
         extractedFeatureWeights[i++] = fw;
-        modelFeaturesWeights[j++] = fw; 
+        modelFeaturesWeights[j++] = fw;
       }
     }
     return new ModelWeight(searcher, modelFeaturesWeights, extractedFeatureWeights, allFeatures.size());
   }
 
-  private void createWeights(IndexSearcher searcher, boolean needsScores, float boost, 
-      List<FeatureWeight > featureWeights, Collection<Feature> features) throws IOException {
+  private void createWeights(IndexSearcher searcher, boolean needsScores, float boost,
+      List<Feature.FeatureWeight > featureWeights, Collection<Feature> features) throws IOException {
     final SolrQueryRequest req = getRequest();
     // since the feature store is a linkedhashmap order is preserved
     for (final Feature f : features) {
-        try{
-          FeatureWeight fw = f.createWeight(searcher, needsScores, req, originalQuery, efi);
-          featureWeights.add(fw);
-        } catch (final Exception e) {
-          throw new RuntimeException("Exception from createWeight for " + f.toString() + " "
-              + e.getMessage(), e);
-        }
+      try{
+        Feature.FeatureWeight fw = f.createWeight(searcher, needsScores, req, originalQuery, efi);
+        featureWeights.add(fw);
+      } catch (final Exception e) {
+        throw new RuntimeException("Exception from createWeight for " + f.toString() + " "
+            + e.getMessage(), e);
       }
+    }
   }
 
-  class CreateWeightCallable implements Callable<FeatureWeight>{
-    private Feature f;
+  class CreateWeightCallable implements Callable<Feature.FeatureWeight>{
+    final private Feature f;
     IndexSearcher searcher;
     boolean needsScores;
     SolrQueryRequest req;
@@ -260,9 +257,9 @@ public class LTRScoringQuery extends Query {
     }
 
     @Override
-    public FeatureWeight call() throws Exception{
+    public Feature.FeatureWeight call() throws Exception{
       try {
-        FeatureWeight fw  = f.createWeight(searcher, needsScores, req, originalQuery, efi);
+        Feature.FeatureWeight fw  = f.createWeight(searcher, needsScores, req, originalQuery, efi);
         return fw;
       } catch (final Exception e) {
         throw new RuntimeException("Exception from createWeight for " + f.toString() + " "
@@ -275,21 +272,21 @@ public class LTRScoringQuery extends Query {
   } // end of call CreateWeightCallable
 
   private void createWeightsParallel(IndexSearcher searcher, boolean needsScores, float boost,
-      List<FeatureWeight > featureWeights, Collection<Feature> features) throws RuntimeException {
+      List<Feature.FeatureWeight > featureWeights, Collection<Feature> features) throws RuntimeException {
 
     final SolrQueryRequest req = getRequest();
-    List<Future<FeatureWeight> > futures = new ArrayList<>(features.size());
+    List<Future<Feature.FeatureWeight> > futures = new ArrayList<>(features.size());
     try{
       for (final Feature f : features) {
         CreateWeightCallable callable = new CreateWeightCallable(f, searcher, needsScores, req);
-        RunnableFuture<FeatureWeight> runnableFuture = new FutureTask<>(callable);
-        querySemaphore.acquire(); // always acquire before the ltrSemaphore is acquired, to guarantee a that the current query is within the limit for max. threads 
+        RunnableFuture<Feature.FeatureWeight> runnableFuture = new FutureTask<>(callable);
+        querySemaphore.acquire(); // always acquire before the ltrSemaphore is acquired, to guarantee a that the current query is within the limit for max. threads
         ltrThreadMgr.acquireLTRSemaphore();//may block and/or interrupt
         ltrThreadMgr.execute(runnableFuture);//releases semaphore when done
         futures.add(runnableFuture);
       }
       //Loop over futures to get the feature weight objects
-      for (final Future<FeatureWeight> future : futures) {
+      for (final Future<Feature.FeatureWeight> future : futures) {
         featureWeights.add(future.get()); // future.get() will block if the job is still running
       }
     } catch (Exception e) { // To catch InterruptedException and ExecutionException
@@ -309,7 +306,7 @@ public class LTRScoringQuery extends Query {
     boolean used;
 
     FeatureInfo(String n, float v, boolean u){
-      name = n; value = v; used = u; 
+      name = n; value = v; used = u;
     }
 
     public void setScore(float score){
@@ -339,34 +336,34 @@ public class LTRScoringQuery extends Query {
 
     // List of the model's features used for scoring. This is a subset of the
     // features used for logging.
-    FeatureWeight[] modelFeatureWeights;
+    Feature.FeatureWeight[] modelFeatureWeights;
     float[] modelFeatureValuesNormalized;
-    FeatureWeight[] extractedFeatureWeights;
+    Feature.FeatureWeight[] extractedFeatureWeights;
 
     // List of all the feature names, values - used for both scoring and logging
     /*
-     *  What is the advantage of using a hashmap here instead of an array of objects?        
-     *     A set of arrays was used earlier and the elements were accessed using the featureId. 
-     *     With the updated logic to create weights selectively, 
-     *     the number of elements in the array can be fewer than the total number of features. 
-     *     When [features] are not requested, only the model features are extracted. 
-     *     In this case, the indexing by featureId, fails. For this reason, 
-     *     we need a map which holds just the features that were triggered by the documents in the result set. 
-     *  
+     *  What is the advantage of using a hashmap here instead of an array of objects?
+     *     A set of arrays was used earlier and the elements were accessed using the featureId.
+     *     With the updated logic to create weights selectively,
+     *     the number of elements in the array can be fewer than the total number of features.
+     *     When [features] are not requested, only the model features are extracted.
+     *     In this case, the indexing by featureId, fails. For this reason,
+     *     we need a map which holds just the features that were triggered by the documents in the result set.
+     *
      */
     FeatureInfo[] featuresInfo;
-    /* 
-     * @param modelFeatureWeights 
+    /*
+     * @param modelFeatureWeights
      *     - should be the same size as the number of features used by the model
      * @param extractedFeatureWeights
      *     - if features are requested from the same store as model feature store,
      *       this will be the size of total number of features in the model feature store
-     *       else, this will be the size of the modelFeatureWeights  
+     *       else, this will be the size of the modelFeatureWeights
      * @param allFeaturesSize
      *     - total number of feature in the feature store used by this model
      */
-    public ModelWeight(IndexSearcher searcher, FeatureWeight[] modelFeatureWeights,
-        FeatureWeight[] extractedFeatureWeights, int allFeaturesSize) {
+    public ModelWeight(IndexSearcher searcher, Feature.FeatureWeight[] modelFeatureWeights,
+        Feature.FeatureWeight[] extractedFeatureWeights, int allFeaturesSize) {
       super(LTRScoringQuery.this);
       this.searcher = searcher;
       this.extractedFeatureWeights = extractedFeatureWeights;
@@ -382,7 +379,7 @@ public class LTRScoringQuery extends Query {
         int featId = extractedFeatureWeights[i].getIndex();
         float value = extractedFeatureWeights[i].getDefaultValue();
         featuresInfo[featId] = new FeatureInfo(featName,value,false);
-      } 
+      }
     }
 
     public FeatureInfo[] getFeaturesInfo(){
@@ -395,10 +392,10 @@ public class LTRScoringQuery extends Query {
      */
     private void makeNormalizedFeatures() {
       int pos = 0;
-      for (final FeatureWeight feature : modelFeatureWeights) {
+      for (final Feature.FeatureWeight feature : modelFeatureWeights) {
         final int featureId = feature.getIndex();
         FeatureInfo fInfo = featuresInfo[featureId];
-        if (fInfo.isUsed()) { // not checking for finfo == null as that would be a bug we should catch 
+        if (fInfo.isUsed()) { // not checking for finfo == null as that would be a bug we should catch
           modelFeatureValuesNormalized[pos] = fInfo.getValue();
         } else {
           modelFeatureValuesNormalized[pos] = feature.getDefaultValue();
@@ -413,12 +410,12 @@ public class LTRScoringQuery extends Query {
         throws IOException {
 
       final Explanation[] explanations = new Explanation[this.featuresInfo.length];
-      for (final FeatureWeight feature : extractedFeatureWeights) {
+      for (final Feature.FeatureWeight feature : extractedFeatureWeights) {
         explanations[feature.getIndex()] = feature.explain(context, doc);
       }
       final List<Explanation> featureExplanations = new ArrayList<>();
       for (int idx = 0 ;idx < modelFeatureWeights.length; ++idx) {
-        final FeatureWeight f = modelFeatureWeights[idx]; 
+        final Feature.FeatureWeight f = modelFeatureWeights[idx];
         Explanation e = ltrScoringModel.getNormalizerExplanation(explanations[f.getIndex()], idx);
         featureExplanations.add(e);
       }
@@ -433,7 +430,7 @@ public class LTRScoringQuery extends Query {
 
     @Override
     public void extractTerms(Set<Term> terms) {
-      for (final FeatureWeight feature : extractedFeatureWeights) {
+      for (final Feature.FeatureWeight feature : extractedFeatureWeights) {
         feature.extractTerms(terms);
       }
     }
@@ -450,10 +447,10 @@ public class LTRScoringQuery extends Query {
     @Override
     public ModelScorer scorer(LeafReaderContext context) throws IOException {
 
-      final List<FeatureScorer> featureScorers = new ArrayList<FeatureScorer>(
+      final List<Feature.FeatureWeight.FeatureScorer> featureScorers = new ArrayList<Feature.FeatureWeight.FeatureScorer>(
           extractedFeatureWeights.length);
-      for (final FeatureWeight featureWeight : extractedFeatureWeights) {
-        final FeatureScorer scorer = featureWeight.scorer(context);
+      for (final Feature.FeatureWeight featureWeight : extractedFeatureWeights) {
+        final Feature.FeatureWeight.FeatureScorer scorer = featureWeight.scorer(context);
         if (scorer != null) {
           featureScorers.add(featureWeight.scorer(context));
         }
@@ -476,10 +473,10 @@ public class LTRScoringQuery extends Query {
         return docInfo;
       }
 
-      public ModelScorer(Weight weight, List<FeatureScorer> featureScorers) {
+      public ModelScorer(Weight weight, List<Feature.FeatureWeight.FeatureScorer> featureScorers) {
         super(weight);
         docInfo = new DocInfo();
-        for (final FeatureScorer subSocer : featureScorers) {
+        for (final Feature.FeatureWeight.FeatureScorer subSocer : featureScorers) {
           subSocer.setDocInfo(docInfo);
         }
         if (featureScorers.size() <= 1) { // TODO: Allow the use of dense
@@ -523,7 +520,7 @@ public class LTRScoringQuery extends Query {
         protected int activeDoc = -1;
 
         protected SparseModelScorer(Weight weight,
-            List<FeatureScorer> featureScorers) {
+            List<Feature.FeatureWeight.FeatureScorer> featureScorers) {
           super(weight);
           if (featureScorers.size() <= 1) {
             throw new IllegalArgumentException(
@@ -555,7 +552,7 @@ public class LTRScoringQuery extends Query {
           if (activeDoc == targetDoc) {
             for (DisiWrapper w = topList; w != null; w = w.next) {
               final Scorer subScorer = w.scorer;
-              FeatureWeight scFW = (FeatureWeight) subScorer.getWeight();
+              Feature.FeatureWeight scFW = (Feature.FeatureWeight) subScorer.getWeight();
               final int featureId = scFW.getIndex();
               featuresInfo[featureId].setScore(subScorer.score());
               featuresInfo[featureId].setUsed(true);
@@ -627,10 +624,10 @@ public class LTRScoringQuery extends Query {
         int activeDoc = -1; // The doc that our scorer's are actually at
         int targetDoc = -1; // The doc we were most recently told to go to
         int freq = -1;
-        List<FeatureScorer> featureScorers;
+        List<Feature.FeatureWeight.FeatureScorer> featureScorers;
 
         protected DenseModelScorer(Weight weight,
-            List<FeatureScorer> featureScorers) {
+            List<Feature.FeatureWeight.FeatureScorer> featureScorers) {
           super(weight);
           this.featureScorers = featureScorers;
         }
@@ -648,7 +645,7 @@ public class LTRScoringQuery extends Query {
             for (final Scorer scorer : featureScorers) {
               if (scorer.docID() == activeDoc) {
                 freq++;
-                FeatureWeight scFW = (FeatureWeight) scorer.getWeight();
+                Feature.FeatureWeight scFW = (Feature.FeatureWeight) scorer.getWeight();
                 final int featureId = scFW.getIndex();
                 featuresInfo[featureId].setScore(scorer.score());
                 featuresInfo[featureId].setUsed(true);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRThreadModule.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRThreadModule.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRThreadModule.java
index 0576f6f..9e71b2f 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRThreadModule.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRThreadModule.java
@@ -136,6 +136,10 @@ final public class LTRThreadModule implements NamedListInitializedPlugin {
     this.maxPoolSize = maxPoolSize;
   }
 
+  public void setKeepAliveTimeSeconds(long keepAliveTimeSeconds) {
+    this.keepAliveTimeSeconds = keepAliveTimeSeconds;
+  }
+
   public void setThreadNamePrefix(String threadNamePrefix) {
     this.threadNamePrefix = threadNamePrefix;
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/Feature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/Feature.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/Feature.java
index 87adde2..2a3973e 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/Feature.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/Feature.java
@@ -53,7 +53,7 @@ import org.apache.solr.util.SolrPluginUtils;
    }
 }</pre>
  * <p>
- * {@link Feature} is an abstract class and concrete classes should implement 
+ * {@link Feature} is an abstract class and concrete classes should implement
  * the {@link #validate()} function, and must implement the {@link #paramsToMap()}
  * and createWeight() methods.
  */
@@ -84,16 +84,16 @@ public abstract class Feature extends Query {
     this.name = name;
     this.params = params;
   }
-  
+
   /**
    * On construction of a feature, this function confirms
    * that the feature parameters are validated
-   * 
+   *
    * @throws FeatureException
    *             Feature Exception
    */
   protected void validate() throws FeatureException {
-    
+
   }
 
   @Override
@@ -138,21 +138,21 @@ public abstract class Feature extends Query {
 
   private boolean equalsTo(Feature other) {
     if (index != other.index) {
-        return false;
+      return false;
     }
     if (name == null) {
-        if (other.name != null) {
-            return false;
-        }
-    } else if (!name.equals(other.name)) {
+      if (other.name != null) {
         return false;
+      }
+    } else if (!name.equals(other.name)) {
+      return false;
     }
     if (params == null) {
-        if (other.params != null) {
-            return false;
-        }
-    } else if (!params.equals(other.params)) {
+      if (other.params != null) {
         return false;
+      }
+    } else if (!params.equals(other.params)) {
+      return false;
     }
     return true;
   }
@@ -204,7 +204,7 @@ public abstract class Feature extends Query {
      * @param searcher
      *          Solr searcher available for features if they need them
      */
-    public FeatureWeight(Query q, IndexSearcher searcher, 
+    public FeatureWeight(Query q, IndexSearcher searcher,
         SolrQueryRequest request, Query originalQuery, Map<String,String[]> efi) {
       super(q);
       this.searcher = searcher;
@@ -237,7 +237,9 @@ public abstract class Feature extends Query {
       float score = getDefaultValue();
       if (r != null) {
         r.iterator().advance(doc);
-        if (r.docID() == doc) score = r.score();
+        if (r.docID() == doc) {
+          score = r.score();
+        }
         return Explanation.match(score, toString());
       }else{
         return Explanation.match(score, "The feature has no value");
@@ -248,7 +250,7 @@ public abstract class Feature extends Query {
      * Used in the FeatureWeight's explain. Each feature should implement this
      * returning properties of the specific scorer useful for an explain. For
      * example "MyCustomClassFeature [name=" + name + "myVariable:" + myVariable +
-     * "]";  If not provided, a default implementation will return basic feature 
+     * "]";  If not provided, a default implementation will return basic feature
      * properties, which might not include query time specific values.
      */
     @Override

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldLengthFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldLengthFeature.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldLengthFeature.java
index 20e5020..a173040 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldLengthFeature.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldLengthFeature.java
@@ -88,9 +88,9 @@ public class FieldLengthFeature extends Feature {
   }
 
   @Override
-  public FeatureWeight createWeight(IndexSearcher searcher, boolean needsScores, 
+  public FeatureWeight createWeight(IndexSearcher searcher, boolean needsScores,
       SolrQueryRequest request, Query originalQuery, Map<String,String[]> efi)
-      throws IOException {
+          throws IOException {
 
     return new FieldLengthFeatureWeight(searcher, request, originalQuery, efi);
   }
@@ -98,7 +98,7 @@ public class FieldLengthFeature extends Feature {
 
   public class FieldLengthFeatureWeight extends FeatureWeight {
 
-    public FieldLengthFeatureWeight(IndexSearcher searcher, 
+    public FieldLengthFeatureWeight(IndexSearcher searcher,
         SolrQueryRequest request, Query originalQuery, Map<String,String[]> efi) {
       super(FieldLengthFeature.this, searcher, request, originalQuery, efi);
     }
@@ -107,7 +107,7 @@ public class FieldLengthFeature extends Feature {
     public FeatureScorer scorer(LeafReaderContext context) throws IOException {
       NumericDocValues norms = context.reader().getNormValues(field);
       if (norms == null){
-        return new ValueFeatureScorer(this, 0f, 
+        return new ValueFeatureScorer(this, 0f,
             DocIdSetIterator.all(DocIdSetIterator.NO_MORE_DOCS));
       }
       return new FieldLengthFeatureScorer(this, norms);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldValueFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldValueFeature.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldValueFeature.java
index 49e0787..913c730 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldValueFeature.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldValueFeature.java
@@ -67,15 +67,15 @@ public class FieldValueFeature extends Feature {
   }
 
   @Override
-  public FeatureWeight createWeight(IndexSearcher searcher, boolean needsScores, 
+  public FeatureWeight createWeight(IndexSearcher searcher, boolean needsScores,
       SolrQueryRequest request, Query originalQuery, Map<String,String[]> efi)
-      throws IOException {
+          throws IOException {
     return new FieldValueFeatureWeight(searcher, request, originalQuery, efi);
   }
 
   public class FieldValueFeatureWeight extends FeatureWeight {
 
-    public FieldValueFeatureWeight(IndexSearcher searcher, 
+    public FieldValueFeatureWeight(IndexSearcher searcher,
         SolrQueryRequest request, Query originalQuery, Map<String,String[]> efi) {
       super(FieldValueFeature.this, searcher, request, originalQuery, efi);
     }
@@ -123,8 +123,8 @@ public class FieldValueFeature extends Feature {
         } catch (final IOException e) {
           throw new FeatureException(
               e.toString() + ": " +
-              "Unable to extract feature for "
-              + name, e);
+                  "Unable to extract feature for "
+                  + name, e);
         }
         return getDefaultValue();
       }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/OriginalScoreFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/OriginalScoreFeature.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/OriginalScoreFeature.java
index f141474..af1c0ec 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/OriginalScoreFeature.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/OriginalScoreFeature.java
@@ -29,7 +29,7 @@ import org.apache.lucene.search.Weight;
 import org.apache.solr.ltr.DocInfo;
 import org.apache.solr.request.SolrQueryRequest;
 /**
- * This feature returns the original score that the document had before performing 
+ * This feature returns the original score that the document had before performing
  * the reranking.
  * Example configuration:
  * <pre>{
@@ -60,19 +60,19 @@ public class OriginalScoreFeature extends Feature {
 
     final Weight w;
 
-    public OriginalScoreWeight(IndexSearcher searcher, 
+    public OriginalScoreWeight(IndexSearcher searcher,
         SolrQueryRequest request, Query originalQuery, Map<String,String[]> efi) throws IOException {
       super(OriginalScoreFeature.this, searcher, request, originalQuery, efi);
       w = searcher.createNormalizedWeight(originalQuery, true);
     };
 
-    
+
     @Override
     public String toString() {
       return "OriginalScoreFeature [query:" + originalQuery.toString() + "]";
     }
 
-    
+
 
     @Override
     public FeatureScorer scorer(LeafReaderContext context) throws IOException {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java
index 2037c34..4482725 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java
@@ -37,7 +37,6 @@ import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.search.QParser;
 import org.apache.solr.search.SolrIndexSearcher;
-import org.apache.solr.search.SolrIndexSearcher.ProcessedFilter;
 import org.apache.solr.search.SyntaxError;
 /**
  * This feature allows you to reuse any Solr query as a feature. The value
@@ -106,9 +105,9 @@ public class SolrFeature extends Feature {
   }
 
   @Override
-  public FeatureWeight createWeight(IndexSearcher searcher, boolean needsScores, 
+  public FeatureWeight createWeight(IndexSearcher searcher, boolean needsScores,
       SolrQueryRequest request, Query originalQuery, Map<String,String[]> efi)
-      throws IOException {
+          throws IOException {
     return new SolrFeatureWeight(searcher, request, originalQuery, efi);
   }
 
@@ -116,9 +115,10 @@ public class SolrFeature extends Feature {
   protected void validate() throws FeatureException {
     super.validate();
     if ((q == null || q.isEmpty()) &&
-         ((fq == null) || fq.isEmpty()))
+        ((fq == null) || fq.isEmpty())) {
       throw new FeatureException(getClass().getSimpleName()+
           ": Q or FQ must be provided");
+    }
   }
   /**
    * Weight for a SolrFeature
@@ -128,7 +128,7 @@ public class SolrFeature extends Feature {
     Query query;
     List<Query> queryAndFilters;
 
-    public SolrFeatureWeight(IndexSearcher searcher, 
+    public SolrFeatureWeight(IndexSearcher searcher,
         SolrQueryRequest request, Query originalQuery, Map<String,String[]> efi) throws IOException {
       super(SolrFeature.this, searcher, request, originalQuery, efi);
       try {
@@ -151,9 +151,7 @@ public class SolrFeature extends Feature {
         }
 
         // Build the filter queries
-        queryAndFilters = new ArrayList<Query>(); // If there are no fqs we
-                                                  // just want an empty
-                                                  // list
+        queryAndFilters = new ArrayList<Query>(); // If there are no fqs we just want an empty list
         if (fqs != null) {
           for (String fq : fqs) {
             if ((fq != null) && (fq.trim().length() != 0)) {
@@ -239,7 +237,7 @@ public class SolrFeature extends Feature {
      */
     public DocIdSetIterator getDocIdSetIteratorFromQueries(List<Query> queries,
         LeafReaderContext context) throws IOException {
-      final ProcessedFilter pf = ((SolrIndexSearcher) searcher)
+      final SolrIndexSearcher.ProcessedFilter pf = ((SolrIndexSearcher) searcher)
           .getProcessedFilter(null, queries);
       final Bits liveDocs = context.reader().getLiveDocs();
 
@@ -273,8 +271,8 @@ public class SolrFeature extends Feature {
         } catch (UnsupportedOperationException e) {
           throw new FeatureException(
               e.toString() + ": " +
-              "Unable to extract feature for "
-              + name, e);
+                  "Unable to extract feature for "
+                  + name, e);
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/ValueFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/ValueFeature.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/ValueFeature.java
index afb1f10..279a551 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/ValueFeature.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/ValueFeature.java
@@ -27,7 +27,7 @@ import org.apache.lucene.search.Query;
 import org.apache.solr.request.SolrQueryRequest;
 /**
  * This feature allows to return a constant given value for the current document.
- * 
+ *
  * Example configuration:
  * <pre>{
    "name" : "userFromMobile",
@@ -42,7 +42,7 @@ import org.apache.solr.request.SolrQueryRequest;
  *In the rerank request you can pass in rq={... efi.userFromMobile=1}, and the above
  *feature will return 1 for all the docs for that request.  If required is set to true,
  *the request will return an error since you failed to pass in the efi, otherwise if will
- *just skip the feature and use a default value of 0 instead. 
+ *just skip the feature and use a default value of 0 instead.
  **/
 public class ValueFeature extends Feature {
   private float configValue = -1f;
@@ -98,9 +98,9 @@ public class ValueFeature extends Feature {
   }
 
   @Override
-  public FeatureWeight createWeight(IndexSearcher searcher, boolean needsScores, 
+  public FeatureWeight createWeight(IndexSearcher searcher, boolean needsScores,
       SolrQueryRequest request, Query originalQuery, Map<String,String[]> efi)
-      throws IOException {
+          throws IOException {
     return new ValueFeatureWeight(searcher, request, originalQuery, efi);
   }
 
@@ -108,7 +108,7 @@ public class ValueFeature extends Feature {
 
     final protected Float featureValue;
 
-    public ValueFeatureWeight(IndexSearcher searcher, 
+    public ValueFeatureWeight(IndexSearcher searcher,
         SolrQueryRequest request, Query originalQuery, Map<String,String[]> efi) {
       super(ValueFeature.this, searcher, request, originalQuery, efi);
       if (configValueStr != null) {
@@ -127,15 +127,16 @@ public class ValueFeature extends Feature {
 
     @Override
     public FeatureScorer scorer(LeafReaderContext context) throws IOException {
-      if(featureValue!=null)
+      if(featureValue!=null) {
         return new ValueFeatureScorer(this, featureValue,
             DocIdSetIterator.all(DocIdSetIterator.NO_MORE_DOCS));
-      else
+      } else {
         return null;
+      }
     }
-    
 
-    
+
+
 
 
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/LTRScoringModel.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/LTRScoringModel.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/LTRScoringModel.java
index 70d5b6d..96efee7 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/LTRScoringModel.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/LTRScoringModel.java
@@ -24,8 +24,8 @@ import java.util.Map;
 
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.search.Explanation;
-import org.apache.solr.ltr.feature.Feature;
 import org.apache.solr.core.SolrResourceLoader;
+import org.apache.solr.ltr.feature.Feature;
 import org.apache.solr.ltr.feature.FeatureException;
 import org.apache.solr.ltr.norm.IdentityNormalizer;
 import org.apache.solr.ltr.norm.Normalizer;
@@ -144,7 +144,7 @@ public abstract class LTRScoringModel {
   public List<Normalizer> getNorms() {
     return Collections.unmodifiableList(norms);
   }
-  
+
   /**
    * @return the name
    */
@@ -238,7 +238,7 @@ public abstract class LTRScoringModel {
   public String getFeatureStoreName() {
     return featureStoreName;
   }
-  
+
   /**
    * Given a list of normalized values for all features a scoring algorithm
    * cares about, calculate and return a score.
@@ -271,7 +271,7 @@ public abstract class LTRScoringModel {
   public String toString() {
     return  getClass().getSimpleName() + "(name="+getName()+")";
   }
-  
+
   /**
    * Goes through all the stored feature values, and calculates the normalized
    * values for all the features that will be used for scoring.
@@ -282,17 +282,17 @@ public abstract class LTRScoringModel {
       throw new FeatureException("Must have normalizer for every feature");
     }
     for(int idx = 0; idx < modelFeatureValuesNormalized.length; ++idx) {
-      modelFeatureValuesNormalized[idx] = 
+      modelFeatureValuesNormalized[idx] =
           norms.get(idx).normalize(modelFeatureValuesNormalized[idx]);
     }
   }
-  
+
   public Explanation getNormalizerExplanation(Explanation e, int idx) {
     Normalizer n = norms.get(idx);
     if (n != IdentityNormalizer.INSTANCE) {
       return n.explain(e);
     }
     return e;
-  } 
+  }
 
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/LinearModel.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/LinearModel.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/LinearModel.java
index 0e8d190..8fdab57 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/LinearModel.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/LinearModel.java
@@ -26,7 +26,7 @@ import org.apache.solr.ltr.feature.Feature;
 import org.apache.solr.ltr.norm.Normalizer;
 
 /**
- * A scoring model that computes scores using a dot product. 
+ * A scoring model that computes scores using a dot product.
  * Example models are RankSVM and Pranking.
  * <p>
  * Example configuration:
@@ -134,7 +134,9 @@ public class LinearModel extends LTRScoringModel {
     sb.append("(name=").append(getName());
     sb.append(",featureWeights=[");
     for (int ii = 0; ii < features.size(); ++ii) {
-      if (ii>0) sb.append(',');
+      if (ii>0) {
+        sb.append(',');
+      }
       final String key = features.get(ii).getName();
       sb.append(key).append('=').append(featureToWeight[ii]);
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/MultipleAdditiveTreesModel.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/MultipleAdditiveTreesModel.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/MultipleAdditiveTreesModel.java
index 0046b46..fa277cb 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/MultipleAdditiveTreesModel.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/MultipleAdditiveTreesModel.java
@@ -316,7 +316,7 @@ public class MultipleAdditiveTreesModel extends LTRScoringModel {
     }
   }
 
- @Override
+  @Override
   public float score(float[] modelFeatureValuesNormalized) {
     float score = 0;
     for (final RegressionTree t : trees) {
@@ -365,7 +365,9 @@ public class MultipleAdditiveTreesModel extends LTRScoringModel {
     sb.append("(name=").append(getName());
     sb.append(",trees=[");
     for (int ii = 0; ii < trees.size(); ++ii) {
-      if (ii>0) sb.append(',');
+      if (ii>0) {
+        sb.append(',');
+      }
       sb.append(trees.get(ii));
     }
     sb.append("])");

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/MinMaxNormalizer.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/MinMaxNormalizer.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/MinMaxNormalizer.java
index 6f9dd86..89c7b45 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/MinMaxNormalizer.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/MinMaxNormalizer.java
@@ -72,14 +72,15 @@ public class MinMaxNormalizer extends Normalizer {
     this.max = Float.parseFloat(max);
     updateDelta();
   }
-  
+
   @Override
   protected void validate() throws NormalizerException {
     super.validate();
-    if (delta == 0f)
-      throw 
+    if (delta == 0f) {
+      throw
       new NormalizerException("MinMax Normalizer delta must not be zero " +
-      "| min = " + min + ",max = " + max + ",delta = " + delta);
+          "| min = " + min + ",max = " + max + ",delta = " + delta);
+    }
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/Normalizer.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/Normalizer.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/Normalizer.java
index 70b4c92..7d77151 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/Normalizer.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/Normalizer.java
@@ -51,16 +51,16 @@ public abstract class Normalizer {
     f.validate();
     return f;
   }
-  
+
   /**
    * On construction of a normalizer, this function confirms
    * that the normalizer parameters are validated
-   * 
+   *
    * @throws NormalizerException
    *             Normalizer Exception
    */
   protected void validate() throws NormalizerException {
-    
+
   }
 
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/StandardNormalizer.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/StandardNormalizer.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/StandardNormalizer.java
index 51238d9..20a984c 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/StandardNormalizer.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/StandardNormalizer.java
@@ -69,14 +69,15 @@ public class StandardNormalizer extends Normalizer {
   public float normalize(float value) {
     return (value - avg) / std;
   }
-  
+
   @Override
   protected void validate() throws NormalizerException {
     super.validate();
-    if (std <= 0f)
-      throw 
+    if (std <= 0f) {
+      throw
       new NormalizerException("Standard Normalizer standard deviation must "
-            + "be positive | avg = " + avg + ",std = " + std);
+          + "be positive | avg = " + avg + ",std = " + std);
+    }
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/store/rest/ManagedFeatureStore.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/store/rest/ManagedFeatureStore.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/store/rest/ManagedFeatureStore.java
index fca10ad..a557bde 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/store/rest/ManagedFeatureStore.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/store/rest/ManagedFeatureStore.java
@@ -24,7 +24,6 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.solr.common.SolrException;
-import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.SolrResourceLoader;
@@ -34,15 +33,14 @@ import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.rest.BaseSolrResource;
 import org.apache.solr.rest.ManagedResource;
 import org.apache.solr.rest.ManagedResourceObserver;
-import org.apache.solr.rest.ManagedResourceStorage.StorageIO;
+import org.apache.solr.rest.ManagedResourceStorage;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
  * Managed resource for a storing a feature.
  */
-public class ManagedFeatureStore extends ManagedResource implements
-    ManagedResource.ChildResourceSupport {
+public class ManagedFeatureStore extends ManagedResource implements ManagedResource.ChildResourceSupport {
 
   public static void registerManagedFeatureStore(SolrResourceLoader solrResourceLoader,
       ManagedResourceObserver managedResourceObserver) {
@@ -84,9 +82,9 @@ public class ManagedFeatureStore extends ManagedResource implements
   private static final String FEATURES_JSON_FIELD = "features";
 
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-  
+
   public ManagedFeatureStore(String resourceId, SolrResourceLoader loader,
-      StorageIO storageIO) throws SolrException {
+      ManagedResourceStorage.StorageIO storageIO) throws SolrException {
     super(resourceId, loader, storageIO);
 
   }
@@ -175,7 +173,7 @@ public class ManagedFeatureStore extends ManagedResource implements
     } else {
       final FeatureStore store = getFeatureStore(childId);
       if (store == null) {
-        throw new SolrException(ErrorCode.BAD_REQUEST,
+        throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
             "missing feature store [" + childId + "]");
       }
       response.add(FEATURES_JSON_FIELD,
@@ -200,7 +198,7 @@ public class ManagedFeatureStore extends ManagedResource implements
     o.put(PARAMS_KEY, feat.paramsToMap());
     return o;
   }
-  
+
   private static Feature fromFeatureMap(SolrResourceLoader solrResourceLoader,
       Map<String,Object> featureMap) {
     final String className = (String) featureMap.get(CLASS_KEY);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/store/rest/ManagedModelStore.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/store/rest/ManagedModelStore.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/store/rest/ManagedModelStore.java
index c4addfb..8436751 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/store/rest/ManagedModelStore.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/store/rest/ManagedModelStore.java
@@ -21,8 +21,8 @@ import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+
 import org.apache.solr.common.SolrException;
-import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.SolrResourceLoader;
@@ -37,15 +37,14 @@ import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.rest.BaseSolrResource;
 import org.apache.solr.rest.ManagedResource;
 import org.apache.solr.rest.ManagedResourceObserver;
-import org.apache.solr.rest.ManagedResourceStorage.StorageIO;
+import org.apache.solr.rest.ManagedResourceStorage;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
  * Menaged resource for storing a model
  */
-public class ManagedModelStore extends ManagedResource implements
-    ManagedResource.ChildResourceSupport {
+public class ManagedModelStore extends ManagedResource implements ManagedResource.ChildResourceSupport {
 
   public static void registerManagedModelStore(SolrResourceLoader solrResourceLoader,
       ManagedResourceObserver managedResourceObserver) {
@@ -63,9 +62,6 @@ public class ManagedModelStore extends ManagedResource implements
   /** the model store rest endpoint **/
   public static final String REST_END_POINT = "/schema/model-store";
 
-  /** name of the attribute containing the features used by the mode **/
-  private static final Object MODEL_FEATURE_LIST = "features";
-
   /**
    * Managed model store: the name of the attribute containing all the models of
    * a model store
@@ -89,9 +85,9 @@ public class ManagedModelStore extends ManagedResource implements
   private ManagedFeatureStore managedFeatureStore;
 
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-  
+
   public ManagedModelStore(String resourceId, SolrResourceLoader loader,
-      StorageIO storageIO) throws SolrException {
+      ManagedResourceStorage.StorageIO storageIO) throws SolrException {
     super(resourceId, loader, storageIO);
     store = new ModelStore();
   }
@@ -131,7 +127,7 @@ public class ManagedModelStore extends ManagedResource implements
           final LTRScoringModel algo = fromLTRScoringModelMap(solrResourceLoader, u, managedFeatureStore);
           addModel(algo);
         } catch (final ModelException e) {
-          throw new SolrException(ErrorCode.BAD_REQUEST, e);
+          throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
         }
       }
     }
@@ -142,7 +138,7 @@ public class ManagedModelStore extends ManagedResource implements
       log.info("adding model {}", ltrScoringModel.getName());
       store.addModel(ltrScoringModel);
     } catch (final ModelException e) {
-      throw new SolrException(ErrorCode.BAD_REQUEST, e);
+      throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
     }
   }
 
@@ -156,7 +152,7 @@ public class ManagedModelStore extends ManagedResource implements
           final LTRScoringModel algo = fromLTRScoringModelMap(solrResourceLoader, u, managedFeatureStore);
           addModel(algo);
         } catch (final ModelException e) {
-          throw new SolrException(ErrorCode.BAD_REQUEST, e);
+          throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
         }
       }
     }
@@ -167,7 +163,7 @@ public class ManagedModelStore extends ManagedResource implements
         final LTRScoringModel algo = fromLTRScoringModelMap(solrResourceLoader, map, managedFeatureStore);
         addModel(algo);
       } catch (final ModelException e) {
-        throw new SolrException(ErrorCode.BAD_REQUEST, e);
+        throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
       }
     }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/response/transform/LTRFeatureLoggerTransformerFactory.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/response/transform/LTRFeatureLoggerTransformerFactory.java b/solr/contrib/ltr/src/java/org/apache/solr/response/transform/LTRFeatureLoggerTransformerFactory.java
index 605b990..d144292 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/response/transform/LTRFeatureLoggerTransformerFactory.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/response/transform/LTRFeatureLoggerTransformerFactory.java
@@ -25,24 +25,20 @@ import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.search.Explanation;
 import org.apache.solr.common.SolrDocument;
 import org.apache.solr.common.SolrException;
-import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.ltr.FeatureLogger;
 import org.apache.solr.ltr.LTRRescorer;
 import org.apache.solr.ltr.LTRScoringQuery;
-import org.apache.solr.ltr.LTRScoringQuery.ModelWeight;
 import org.apache.solr.ltr.LTRThreadModule;
-import org.apache.solr.ltr.feature.Feature;
 import org.apache.solr.ltr.SolrQueryRequestContextUtils;
+import org.apache.solr.ltr.feature.Feature;
 import org.apache.solr.ltr.model.LTRScoringModel;
 import org.apache.solr.ltr.norm.Normalizer;
 import org.apache.solr.ltr.store.FeatureStore;
 import org.apache.solr.ltr.store.rest.ManagedFeatureStore;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.ResultContext;
-import org.apache.solr.response.transform.DocTransformer;
-import org.apache.solr.response.transform.TransformerFactory;
 import org.apache.solr.search.LTRQParserPlugin;
 import org.apache.solr.search.SolrIndexSearcher;
 import org.apache.solr.util.SolrPluginUtils;
@@ -124,7 +120,7 @@ public class LTRFeatureLoggerTransformerFactory extends TransformerFactory {
     private List<LeafReaderContext> leafContexts;
     private SolrIndexSearcher searcher;
     private LTRScoringQuery scoringQuery;
-    private ModelWeight modelWeight;
+    private LTRScoringQuery.ModelWeight modelWeight;
     private FeatureLogger<?> featureLogger;
     private boolean docsWereNotReranked;
 
@@ -158,7 +154,7 @@ public class LTRFeatureLoggerTransformerFactory extends TransformerFactory {
       searcher = context.getSearcher();
       if (searcher == null) {
         throw new SolrException(
-            org.apache.solr.common.SolrException.ErrorCode.BAD_REQUEST,
+            SolrException.ErrorCode.BAD_REQUEST,
             "searcher is null");
       }
       leafContexts = searcher.getTopReaderContext().leaves();
@@ -174,13 +170,13 @@ public class LTRFeatureLoggerTransformerFactory extends TransformerFactory {
 
         final FeatureStore store = fr.getFeatureStore(featureStoreName);
         featureStoreName = store.getName(); // if featureStoreName was null before this gets actual name
-        
+
         try {
           final LoggingModel lm = new LoggingModel(loggingModelName,
               featureStoreName, store.getFeatures());
-          
-          scoringQuery = new LTRScoringQuery(lm, 
-              LTRQParserPlugin.extractEFIParams(params), 
+
+          scoringQuery = new LTRScoringQuery(lm,
+              LTRQParserPlugin.extractEFIParams(params),
               true,
               threadManager); // request feature weights to be created for all features
 
@@ -188,7 +184,7 @@ public class LTRFeatureLoggerTransformerFactory extends TransformerFactory {
           scoringQuery.setOriginalQuery(context.getQuery());
 
         }catch (final Exception e) {
-          throw new SolrException(ErrorCode.BAD_REQUEST,
+          throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
               "retrieving the feature store "+featureStoreName, e);
         }
       }
@@ -203,10 +199,10 @@ public class LTRFeatureLoggerTransformerFactory extends TransformerFactory {
       try {
         modelWeight = scoringQuery.createWeight(searcher, true, 1f);
       } catch (final IOException e) {
-        throw new SolrException(ErrorCode.BAD_REQUEST, e.getMessage(), e);
+        throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e.getMessage(), e);
       }
       if (modelWeight == null) {
-        throw new SolrException(ErrorCode.BAD_REQUEST,
+        throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
             "error logging the features, model weight is null");
       }
     }
@@ -236,7 +232,7 @@ public class LTRFeatureLoggerTransformerFactory extends TransformerFactory {
           featureStoreName, allFeatures, Collections.emptyMap());
     }
 
-    protected LoggingModel(String name, List<Feature> features, 
+    protected LoggingModel(String name, List<Feature> features,
         List<Normalizer> norms, String featureStoreName,
         List<Feature> allFeatures, Map<String,Object> params) {
       super(name, features, norms, featureStoreName, allFeatures, params);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/response/transform/package-info.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/response/transform/package-info.java b/solr/contrib/ltr/src/java/org/apache/solr/response/transform/package-info.java
index 7b48f36..bab3ebf 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/response/transform/package-info.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/response/transform/package-info.java
@@ -14,8 +14,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
- 
-/** 
+
+/**
  * APIs and implementations of {@link org.apache.solr.response.transform.DocTransformer} for modifying documents in Solr request responses
  */
 package org.apache.solr.response.transform;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/search/LTRQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/search/LTRQParserPlugin.java b/solr/contrib/ltr/src/java/org/apache/solr/search/LTRQParserPlugin.java
index ad2e81c..40cbaa9 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/search/LTRQParserPlugin.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/search/LTRQParserPlugin.java
@@ -27,23 +27,19 @@ import org.apache.lucene.analysis.util.ResourceLoaderAware;
 import org.apache.lucene.search.MatchAllDocsQuery;
 import org.apache.lucene.search.Query;
 import org.apache.solr.common.SolrException;
-import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
+import org.apache.solr.core.SolrResourceLoader;
 import org.apache.solr.ltr.LTRRescorer;
-import org.apache.solr.ltr.LTRThreadModule;
 import org.apache.solr.ltr.LTRScoringQuery;
+import org.apache.solr.ltr.LTRThreadModule;
 import org.apache.solr.ltr.SolrQueryRequestContextUtils;
 import org.apache.solr.ltr.model.LTRScoringModel;
-import org.apache.solr.core.SolrResourceLoader;
 import org.apache.solr.ltr.store.rest.ManagedFeatureStore;
 import org.apache.solr.ltr.store.rest.ManagedModelStore;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.rest.ManagedResource;
 import org.apache.solr.rest.ManagedResourceObserver;
-import org.apache.solr.search.QParser;
-import org.apache.solr.search.QParserPlugin;
-import org.apache.solr.search.SyntaxError;
 import org.apache.solr.util.SolrPluginUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -60,7 +56,7 @@ public class LTRQParserPlugin extends QParserPlugin implements ResourceLoaderAwa
   private static Query defaultQuery = new MatchAllDocsQuery();
 
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-  
+
   // params for setting custom external info that features can use, like query
   // intent
   static final String EXTERNAL_FEATURE_INFO = "efi.";
@@ -88,13 +84,13 @@ public class LTRQParserPlugin extends QParserPlugin implements ResourceLoaderAwa
     threadManager = LTRThreadModule.getInstance(args);
     SolrPluginUtils.invokeSetters(this, args);
   }
-  
+
   @Override
   public QParser createParser(String qstr, SolrParams localParams,
       SolrParams params, SolrQueryRequest req) {
     return new LTRQParser(qstr, localParams, params, req);
   }
-  
+
   /**
    * Given a set of local SolrParams, extract all of the efi.key=value params into a map
    * @param localParams Local request parameters that might conatin efi params
@@ -114,7 +110,7 @@ public class LTRQParserPlugin extends QParserPlugin implements ResourceLoaderAwa
     }
     return externalFeatureInfo;
   }
-  
+
 
   @Override
   public void inform(ResourceLoader loader) throws IOException {
@@ -126,15 +122,15 @@ public class LTRQParserPlugin extends QParserPlugin implements ResourceLoaderAwa
   @Override
   public void onManagedResourceInitialized(NamedList<?> args, ManagedResource res) throws SolrException {
     if (res instanceof ManagedFeatureStore) {
-        fr = (ManagedFeatureStore)res;
+      fr = (ManagedFeatureStore)res;
     }
     if (res instanceof ManagedModelStore){
-        mr = (ManagedModelStore)res;
+      mr = (ManagedModelStore)res;
     }
     if (mr != null && fr != null){
-        mr.setManagedFeatureStore(fr);
-        // now we can safely load the models
-        mr.loadStoredModels();
+      mr.setManagedFeatureStore(fr);
+      // now we can safely load the models
+      mr.loadStoredModels();
 
     }
   }
@@ -154,10 +150,10 @@ public class LTRQParserPlugin extends QParserPlugin implements ResourceLoaderAwa
         throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
             "Must provide model in the request");
       }
-     
+
       final LTRScoringModel ltrScoringModel = mr.getModel(modelName);
       if (ltrScoringModel == null) {
-        throw new SolrException(ErrorCode.BAD_REQUEST,
+        throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
             "cannot find " + LTRQParserPlugin.MODEL + " " + modelName);
       }
 
@@ -166,13 +162,13 @@ public class LTRQParserPlugin extends QParserPlugin implements ResourceLoaderAwa
       final String fvStoreName = SolrQueryRequestContextUtils.getFvStoreName(req);
       // Check if features are requested and if the model feature store and feature-transform feature store are the same
       final boolean featuresRequestedFromSameStore = (modelFeatureStoreName.equals(fvStoreName) || fvStoreName == null) ? extractFeatures:false;
-      
-      final LTRScoringQuery scoringQuery = new LTRScoringQuery(ltrScoringModel, 
-          extractEFIParams(localParams), 
+
+      final LTRScoringQuery scoringQuery = new LTRScoringQuery(ltrScoringModel,
+          extractEFIParams(localParams),
           featuresRequestedFromSameStore, threadManager);
 
       // Enable the feature vector caching if we are extracting features, and the features
-      // we requested are the same ones we are reranking with 
+      // we requested are the same ones we are reranking with
       if (featuresRequestedFromSameStore) {
         scoringQuery.setFeatureLogger( SolrQueryRequestContextUtils.getFeatureLogger(req) );
       }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/search/package-info.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/search/package-info.java b/solr/contrib/ltr/src/java/org/apache/solr/search/package-info.java
index 67940b6..2286a93 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/search/package-info.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/search/package-info.java
@@ -14,8 +14,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
- 
-/** 
+
+/**
  * APIs and classes for {@linkplain org.apache.solr.search.QParserPlugin parsing} and {@linkplain org.apache.solr.search.SolrIndexSearcher processing} search requests
  */
 package org.apache.solr.search;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTROnSolrCloud.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTROnSolrCloud.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTROnSolrCloud.java
index a8f938d..0eb661e 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTROnSolrCloud.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTROnSolrCloud.java
@@ -16,8 +16,8 @@
 package org.apache.solr.ltr;
 
 import java.io.File;
-import java.lang.invoke.MethodHandles;
 import java.util.SortedMap;
+
 import org.apache.commons.io.FileUtils;
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.embedded.JettyConfig;
@@ -28,25 +28,20 @@ import org.apache.solr.cloud.AbstractDistribZkTestBase;
 import org.apache.solr.cloud.MiniSolrCloudCluster;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.cloud.ZkStateReader;
-import org.apache.solr.ltr.TestRerankBase;
 import org.apache.solr.ltr.feature.SolrFeature;
 import org.apache.solr.ltr.feature.ValueFeature;
 import org.apache.solr.ltr.model.LinearModel;
 import org.eclipse.jetty.servlet.ServletHolder;
 import org.junit.AfterClass;
 import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class TestLTROnSolrCloud extends TestRerankBase {
 
-  private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
   private MiniSolrCloudCluster solrCluster;
   String solrconfig = "solrconfig-ltr.xml";
   String schema = "schema-ltr.xml";
-    
-  SortedMap<ServletHolder,String> extraServlets = null; 
+
+  SortedMap<ServletHolder,String> extraServlets = null;
 
   @Override
   public void setUp() throws Exception {
@@ -138,7 +133,7 @@ public class TestLTROnSolrCloud extends TestRerankBase {
   private void createCollection(String name, String config, int numShards, int numReplicas, int maxShardsPerNode)
       throws Exception {
     CollectionAdminResponse response;
-    CollectionAdminRequest.Create create = 
+    CollectionAdminRequest.Create create =
         CollectionAdminRequest.createCollection(name, config, numShards, numReplicas);
     create.setMaxShardsPerNode(maxShardsPerNode);
     response = create.process(solrCluster.getSolrClient());
@@ -199,14 +194,14 @@ public class TestLTROnSolrCloud extends TestRerankBase {
     );
     reloadCollection(COLLECTION);
   }
-  
+
   private void reloadCollection(String collection) throws Exception {
     CollectionAdminRequest.Reload reloadRequest = CollectionAdminRequest.reloadCollection(collection);
     CollectionAdminResponse response = reloadRequest.process(solrCluster.getSolrClient());
     assertEquals(0, response.getStatus());
     assertTrue(response.isSuccess());
   }
-  
+
   @AfterClass
   public static void after() throws Exception {
     FileUtils.deleteDirectory(tmpSolrHome);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRQParserExplain.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRQParserExplain.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRQParserExplain.java
index 8a46336..eb79249 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRQParserExplain.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRQParserExplain.java
@@ -18,7 +18,6 @@ package org.apache.solr.ltr;
 
 import org.apache.solr.SolrTestCaseJ4.SuppressSSL;
 import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.ltr.TestRerankBase;
 import org.apache.solr.ltr.model.LinearModel;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
@@ -51,7 +50,7 @@ public class TestLTRQParserExplain extends TestRerankBase {
     query.add("rows", "2");
     query.add("rq", "{!ltr reRankDocs=2 model=linear2}");
     query.add("fl", "*,score");
-    
+
     assertJQ(
         "/query" + query.toQueryString(),
         "/debug/explain/9=='\n13.5 = LinearModel(name=linear2,featureWeights=[constant1=1.5,constant2=3.5,pop=1.0]) model applied to features, sum of:\n  1.5 = prod of:\n    1.5 = weight on feature\n    1.0 = ValueFeature [name=constant1, params={value=1}]\n  7.0 = prod of:\n    3.5 = weight on feature\n    2.0 = ValueFeature [name=constant2, params={value=2}]\n  5.0 = prod of:\n    1.0 = weight on feature\n    5.0 = FieldValueFeature [name=pop, params={field=popularity}]\n'");
@@ -79,7 +78,7 @@ public class TestLTRQParserExplain extends TestRerankBase {
         + "queryIntentPerson=0.1231231,"
         + "queryIntentCompany=0.12121211"
         + "]) model applied to features, sum of:\n  0.0 = prod of:\n    0.0 = weight on feature\n    1.0 = ValueFeature [name=title, params={value=1}]\n  0.2 = prod of:\n    0.1 = weight on feature\n    2.0 = ValueFeature [name=description, params={value=2}]\n  0.4 = prod of:\n    0.2 = weight on feature\n    2.0 = ValueFeature [name=keywords, params={value=2}]\n  0.09 = prod of:\n    0.3 = weight on feature\n    0.3 = "+expectedExplainNormalizer+"\n      3.0 = ValueFeature [name=popularity, params={value=3}]\n  1.6 = prod of:\n    0.4 = weight on feature\n    4.0 = ValueFeature [name=text, params={value=4}]\n  0.6156155 = prod of:\n    0.1231231 = weight on feature\n    5.0 = ValueFeature [name=queryIntentPerson, params={value=5}]\n  0.60606056 = prod of:\n    0.12121211 = weight on feature\n    5.0 = ValueFeature [name=queryIntentCompany, params={value=5}]\n";
-    
+
     assertJQ(
         "/query" + query.toQueryString(),
         "/debug/explain/7=='"+expectedExplain+"'}");

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRQParserPlugin.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRQParserPlugin.java
index 256aa92..c3f7dea 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRQParserPlugin.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRQParserPlugin.java
@@ -18,7 +18,6 @@ package org.apache.solr.ltr;
 
 import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
 import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.ltr.TestRerankBase;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -71,37 +70,37 @@ public class TestLTRQParserPlugin extends TestRerankBase {
     assert (res.contains("cannot find model"));
   }
 
-  @Test    
-  public void ltrMoreResultsThanReRankedTest() throws Exception {   
-    final String solrQuery = "_query_:{!edismax qf='title' mm=100% v='bloomberg' tie=0.1}";   
-    final SolrQuery query = new SolrQuery();    
-    query.setQuery(solrQuery);    
-    query.add("fl", "*, score");    
-    query.add("rows", "4");   
-    query.add("fv", "true");    
-       
+  @Test
+  public void ltrMoreResultsThanReRankedTest() throws Exception {
+    final String solrQuery = "_query_:{!edismax qf='title' mm=100% v='bloomberg' tie=0.1}";
+    final SolrQuery query = new SolrQuery();
+    query.setQuery(solrQuery);
+    query.add("fl", "*, score");
+    query.add("rows", "4");
+    query.add("fv", "true");
+
     String nonRerankedScore = "0.09271725";
-    
+
     // Normal solr order
-    assertJQ("/query" + query.toQueryString(), 
+    assertJQ("/query" + query.toQueryString(),
         "/response/docs/[0]/id=='9'",
         "/response/docs/[1]/id=='8'",
         "/response/docs/[2]/id=='7'",
         "/response/docs/[3]/id=='6'",
         "/response/docs/[3]/score=="+nonRerankedScore
-    );    
-    
+    );
+
     query.add("rq", "{!ltr model=6029760550880411648 reRankDocs=3}");
-    
+
     // Different order for top 3 reranked, but last one is the same top nonreranked doc
-    assertJQ("/query" + query.toQueryString(), 
+    assertJQ("/query" + query.toQueryString(),
         "/response/docs/[0]/id=='7'",
         "/response/docs/[1]/id=='8'",
         "/response/docs/[2]/id=='9'",
         "/response/docs/[3]/id=='6'",
         "/response/docs/[3]/score=="+nonRerankedScore
-    );    
-  }  
+    );
+  }
 
   @Test
   public void ltrNoResultsTest() throws Exception {