You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2017/06/27 05:19:26 UTC

[15/27] lucene-solr:feature/autoscaling: Revert "SOLR-9981: Performance improvements and bug fixes for the Analytics component"

Revert "SOLR-9981: Performance improvements and bug fixes for the Analytics component"

This reverts commit a5dce163eb09dcc0eb7f7eb81d692bf3d19964a3.


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

Branch: refs/heads/feature/autoscaling
Commit: bee8d7ccb32bc23bd808f729493631b60a64bffb
Parents: 288ab09
Author: Dennis Gove <dp...@gmail.com>
Authored: Mon Jun 26 13:51:28 2017 -0400
Committer: Dennis Gove <dp...@gmail.com>
Committed: Mon Jun 26 17:33:26 2017 -0400

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  6 ---
 .../accumulator/FacetingAccumulator.java        | 24 ++----------
 .../solr/analytics/expression/Expression.java   | 15 ++------
 .../statistics/MinMaxStatsCollector.java        | 23 +++--------
 .../statistics/NumericStatsCollector.java       |  8 ++--
 .../StatsCollectorSupplierFactory.java          | 14 ++-----
 .../analytics/requestFiles/facetSorting.txt     |  4 --
 .../analytics/requestXMLFiles/facetSorting.xml  | 14 -------
 .../collection1/conf/solrconfig-analytics.xml   | 40 --------------------
 .../solr/collection1/conf/solrconfig-basic.xml  | 40 ++++++++++++++++++++
 .../org/apache/solr/analytics/NoFacetTest.java  |  2 +-
 .../analytics/expression/ExpressionTest.java    |  2 +-
 .../facet/AbstractAnalyticsFacetTest.java       | 15 --------
 .../solr/analytics/facet/FacetSortingTest.java  | 40 --------------------
 .../analytics/facet/FieldFacetExtrasTest.java   |  2 +-
 .../solr/analytics/facet/FieldFacetTest.java    | 21 +++++-----
 .../solr/analytics/facet/QueryFacetTest.java    |  2 +-
 .../solr/analytics/facet/RangeFacetTest.java    |  2 +-
 .../util/valuesource/FunctionTest.java          |  2 +-
 19 files changed, 73 insertions(+), 203 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bee8d7cc/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index d83b4ab..ff51bd7 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -227,12 +227,6 @@ Optimizations
 * SOLR-10727: Avoid polluting the filter cache for certain types of faceting (typically ranges) when
   the base docset is empty. (David Smiley)
 
-* SOLR-9981: Performance improvements and bug fixes for the Analytics component. Performance fix that 
-  stops the reading of ALL lucene segments over and again for each stats collector. The AtomicReaderContext 
-  that refers to the "current " segment is reused. This fix shows an improvement of about 25% in query 
-  time for a dataset of ~10M (=9.8M) records. Given the nature of the fix, the improvement should get 
-  better as the dataset increases. Fix for the NPE during comparison (Houston Putman)
-
 Other Changes
 ----------------------
 * SOLR-10236: Removed FieldType.getNumericType(). Use getNumberType() instead. (Tomás Fernández Löbbe)

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bee8d7cc/solr/contrib/analytics/src/java/org/apache/solr/analytics/accumulator/FacetingAccumulator.java
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/java/org/apache/solr/analytics/accumulator/FacetingAccumulator.java b/solr/contrib/analytics/src/java/org/apache/solr/analytics/accumulator/FacetingAccumulator.java
index 92add72..d8828a6 100644
--- a/solr/contrib/analytics/src/java/org/apache/solr/analytics/accumulator/FacetingAccumulator.java
+++ b/solr/contrib/analytics/src/java/org/apache/solr/analytics/accumulator/FacetingAccumulator.java
@@ -28,7 +28,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
-import java.util.HashMap;
+import java.util.TreeMap;
 
 import com.google.common.collect.Iterables;
 import org.apache.lucene.index.LeafReaderContext;
@@ -98,7 +98,7 @@ public class FacetingAccumulator extends BasicAccumulator implements FacetValueA
     List<RangeFacetRequest> rangeFreqs = request.getRangeFacets();
     List<QueryFacetRequest> queryFreqs = request.getQueryFacets();
 
-    this.fieldFacetExpressions = new HashMap<>();
+    this.fieldFacetExpressions = new TreeMap<>();
     this.rangeFacetExpressions = new LinkedHashMap<>(rangeFreqs.size());
     this.queryFacetExpressions = new LinkedHashMap<>(queryFreqs.size());
     this.fieldFacetCollectors = new LinkedHashMap<>(fieldFreqs.size());
@@ -120,8 +120,8 @@ public class FacetingAccumulator extends BasicAccumulator implements FacetValueA
       final SchemaField ff = fr.getField();
       final FieldFacetAccumulator facc = FieldFacetAccumulator.create(searcher, this, ff);
       facetAccumulators.add(facc);
-      fieldFacetExpressions.put(freq.getName(), new HashMap<String, Expression[]>() );
-      fieldFacetCollectors.put(freq.getName(), new HashMap<String,StatsCollector[]>());
+      fieldFacetExpressions.put(freq.getName(), new TreeMap<String, Expression[]>() );
+      fieldFacetCollectors.put(freq.getName(), new TreeMap<String,StatsCollector[]>());
     }
     /**
      * For each range and query facet request add a bucket to the corresponding
@@ -299,22 +299,6 @@ public class FacetingAccumulator extends BasicAccumulator implements FacetValueA
 
     @Override
     public int compare(Entry<String,Expression[]> o1, Entry<String,Expression[]> o2) {
-      
-      // Handle nulls. Null is treated as an infinitely big number so that in case of ASCENDING sorts, 
-      // Nulls will appear last. In case of DESC sorts, Nulls will appear last. 
-      boolean firstIsNull = false;
-      if (o1 == null || o1.getValue() == null || o1.getValue()[comparatorExpressionPlace] == null) 
-        firstIsNull = true;
-      boolean secondIsNull = false;
-      if (o2 == null || o2.getValue() == null || o2.getValue()[comparatorExpressionPlace] == null) 
-        secondIsNull  = true;
-      if (firstIsNull && secondIsNull)
-        return 0;
-      else if (firstIsNull)
-        return 1;
-      else if (secondIsNull)
-        return -1;
-      
       return comp.compare(o1.getValue()[comparatorExpressionPlace], o2.getValue()[comparatorExpressionPlace]);
     }
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bee8d7cc/solr/contrib/analytics/src/java/org/apache/solr/analytics/expression/Expression.java
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/java/org/apache/solr/analytics/expression/Expression.java b/solr/contrib/analytics/src/java/org/apache/solr/analytics/expression/Expression.java
index c0c3da3..ba26d9a 100644
--- a/solr/contrib/analytics/src/java/org/apache/solr/analytics/expression/Expression.java
+++ b/solr/contrib/analytics/src/java/org/apache/solr/analytics/expression/Expression.java
@@ -29,19 +29,10 @@ public abstract class Expression {
 
   public Comparator<Expression> comparator(final FacetSortDirection direction) {
     return (a, b) -> {
-      boolean aIsNull = a.getValue() == null;
-      boolean bIsNull = b.getValue() == null;
-
-      if (aIsNull && bIsNull) return 0;
-
-      if( direction == FacetSortDirection.ASCENDING ){ // nulls are last for ASC sort
-        return aIsNull ? 1
-          : bIsNull ? -1
-          : a.getValue().compareTo(b.getValue());
+      if( direction == FacetSortDirection.ASCENDING ){
+        return a.getValue().compareTo(b.getValue());
       } else {
-        return aIsNull ? -1
-          : bIsNull ? 1
-          : b.getValue().compareTo(a.getValue());
+        return b.getValue().compareTo(a.getValue());
       }
     };
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bee8d7cc/solr/contrib/analytics/src/java/org/apache/solr/analytics/statistics/MinMaxStatsCollector.java
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/java/org/apache/solr/analytics/statistics/MinMaxStatsCollector.java b/solr/contrib/analytics/src/java/org/apache/solr/analytics/statistics/MinMaxStatsCollector.java
index f41a032..c21b045 100644
--- a/solr/contrib/analytics/src/java/org/apache/solr/analytics/statistics/MinMaxStatsCollector.java
+++ b/solr/contrib/analytics/src/java/org/apache/solr/analytics/statistics/MinMaxStatsCollector.java
@@ -37,32 +37,19 @@ public class MinMaxStatsCollector implements StatsCollector{
   protected MutableValue value;
   protected final Set<String> statsList;
   protected final ValueSource source;
+  protected FunctionValues function;
   protected ValueFiller valueFiller;
-  private CollectorState state;
   
-  public MinMaxStatsCollector(ValueSource source, Set<String> statsList, CollectorState state) {
+  public MinMaxStatsCollector(ValueSource source, Set<String> statsList) {
     this.source = source;
     this.statsList = statsList;
-    this.state = state;
   }
   
   public void setNextReader(LeafReaderContext context) throws IOException {
-    state.setNextReader(source, context);
-    valueFiller = state.function.getValueFiller();
+    function = source.getValues(null, context);
+    valueFiller = function.getValueFiller();
     value = valueFiller.getValue();
   }
-
-  public static class CollectorState {
-    FunctionValues function;
-    LeafReaderContext context = null;
-
-    public void setNextReader(ValueSource source, LeafReaderContext context) throws IOException {
-      if (this.context != context) {
-        this.context = context;
-        this.function = source.getValues(null, context);
-      }
-    }
-  }
   
   public void collect(int doc) throws IOException {
     valueFiller.fillValue(doc);
@@ -114,7 +101,7 @@ public class MinMaxStatsCollector implements StatsCollector{
   
   @Override 
   public FunctionValues getFunction() {
-    return state.function;
+    return function;
   }
   
   public String valueSourceString() {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bee8d7cc/solr/contrib/analytics/src/java/org/apache/solr/analytics/statistics/NumericStatsCollector.java
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/java/org/apache/solr/analytics/statistics/NumericStatsCollector.java b/solr/contrib/analytics/src/java/org/apache/solr/analytics/statistics/NumericStatsCollector.java
index 4b1ca22..1f22baa 100644
--- a/solr/contrib/analytics/src/java/org/apache/solr/analytics/statistics/NumericStatsCollector.java
+++ b/solr/contrib/analytics/src/java/org/apache/solr/analytics/statistics/NumericStatsCollector.java
@@ -29,16 +29,14 @@ public class NumericStatsCollector extends MinMaxStatsCollector {
   protected double sumOfSquares = 0;
   protected double mean = 0;
   protected double stddev = 0;
-  protected CollectorState state;
   
-  public NumericStatsCollector(ValueSource source, Set<String> statsList, CollectorState state) {
-    super(source, statsList, state);
-    this.state = state;
+  public NumericStatsCollector(ValueSource source, Set<String> statsList) {
+    super(source, statsList);
   }
   
   public void collect(int doc) throws IOException {
     super.collect(doc);
-    double value = state.function.doubleVal(doc);
+    double value = function.doubleVal(doc);
     sum += value;
     sumOfSquares += (value * value);
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bee8d7cc/solr/contrib/analytics/src/java/org/apache/solr/analytics/statistics/StatsCollectorSupplierFactory.java
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/java/org/apache/solr/analytics/statistics/StatsCollectorSupplierFactory.java b/solr/contrib/analytics/src/java/org/apache/solr/analytics/statistics/StatsCollectorSupplierFactory.java
index c7c91d4..e22362d 100644
--- a/solr/contrib/analytics/src/java/org/apache/solr/analytics/statistics/StatsCollectorSupplierFactory.java
+++ b/solr/contrib/analytics/src/java/org/apache/solr/analytics/statistics/StatsCollectorSupplierFactory.java
@@ -33,7 +33,6 @@ import org.apache.lucene.queries.function.valuesource.IntFieldSource;
 import org.apache.lucene.queries.function.valuesource.LongFieldSource;
 import org.apache.solr.analytics.expression.ExpressionFactory;
 import org.apache.solr.analytics.request.ExpressionRequest;
-import org.apache.solr.analytics.statistics.MinMaxStatsCollector.CollectorState;
 import org.apache.solr.analytics.util.AnalyticsParams;
 import org.apache.solr.analytics.util.valuesource.AbsoluteValueDoubleFunction;
 import org.apache.solr.analytics.util.valuesource.AddDoubleFunction;
@@ -214,32 +213,25 @@ public class StatsCollectorSupplierFactory {
         }
       }
     }
-
-    final CollectorState states[] = new CollectorState[statsArr.length];
-    for (int count = 0; count < statsArr.length; count++) {
-      states[count] = new CollectorState();
-    }
     // Making the Supplier
     return new Supplier<StatsCollector[]>() {
-      private final CollectorState collectorState[] = states;
-
       public StatsCollector[] get() {
         StatsCollector[] collectors = new StatsCollector[statsArr.length];
         for (int count = 0; count < statsArr.length; count++) {
           if(numericBools[count]){
-            StatsCollector sc = new NumericStatsCollector(sourceArr[count], statsArr[count], collectorState[count]);
+            StatsCollector sc = new NumericStatsCollector(sourceArr[count], statsArr[count]);
             if(uniqueBools[count]) sc = new UniqueStatsCollector(sc);
             if(medianBools[count]) sc = new MedianStatsCollector(sc);
             if(percsArr[count]!=null) sc = new PercentileStatsCollector(sc,percsArr[count],percsNames[count]);
             collectors[count]=sc;
           } else if (dateBools[count]) {
-            StatsCollector sc = new MinMaxStatsCollector(sourceArr[count], statsArr[count], collectorState[count]);
+            StatsCollector sc = new MinMaxStatsCollector(sourceArr[count], statsArr[count]);
             if(uniqueBools[count]) sc = new UniqueStatsCollector(sc);
             if(medianBools[count]) sc = new DateMedianStatsCollector(sc);
             if(percsArr[count]!=null) sc = new PercentileStatsCollector(sc,percsArr[count],percsNames[count]);
            collectors[count]=sc;
           } else {
-            StatsCollector sc = new MinMaxStatsCollector(sourceArr[count], statsArr[count], collectorState[count]);
+            StatsCollector sc = new MinMaxStatsCollector(sourceArr[count], statsArr[count]);
             if(uniqueBools[count]) sc = new UniqueStatsCollector(sc);
             if(medianBools[count]) sc = new MedianStatsCollector(sc);
             if(percsArr[count]!=null) sc = new PercentileStatsCollector(sc,percsArr[count],percsNames[count]);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bee8d7cc/solr/contrib/analytics/src/test-files/analytics/requestFiles/facetSorting.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/test-files/analytics/requestFiles/facetSorting.txt b/solr/contrib/analytics/src/test-files/analytics/requestFiles/facetSorting.txt
deleted file mode 100644
index 4663217..0000000
--- a/solr/contrib/analytics/src/test-files/analytics/requestFiles/facetSorting.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-o.ar.s.min=min(double_dd)
-o.ar.s.max=max(long_ld)
-o.ar.ff=string_sd
-o.ar.ff.string_sd.sortstatistic=min

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bee8d7cc/solr/contrib/analytics/src/test-files/analytics/requestXMLFiles/facetSorting.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/test-files/analytics/requestXMLFiles/facetSorting.xml b/solr/contrib/analytics/src/test-files/analytics/requestXMLFiles/facetSorting.xml
deleted file mode 100644
index 54e698a..0000000
--- a/solr/contrib/analytics/src/test-files/analytics/requestXMLFiles/facetSorting.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<analyticsRequestEnvelope stats="true" olap="true">
-   <analyticsRequest>
-     <name>MinMax Request</name>
-     <statistic>
-       <expression>min(double(double_dd))</expression>
-       <name>min</name>
-     </statistic>
-     <statistic>
-       <expression>max(long(long_ld))</expression>
-       <name>max</name>
-     </statistic>
-    </analyticsRequest>
- </analyticsRequestEnvelope>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bee8d7cc/solr/contrib/analytics/src/test-files/solr/collection1/conf/solrconfig-analytics.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/test-files/solr/collection1/conf/solrconfig-analytics.xml b/solr/contrib/analytics/src/test-files/solr/collection1/conf/solrconfig-analytics.xml
deleted file mode 100644
index 604bb17..0000000
--- a/solr/contrib/analytics/src/test-files/solr/collection1/conf/solrconfig-analytics.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" ?>
-
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<config>
-  <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
-  <dataDir>${solr.data.dir:}</dataDir>
-  <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
-  <schemaFactory class="ClassicIndexSchemaFactory"/>
-
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
-    <arr name="components">
-      <str>query</str>
-      <str>facet</str>
-      <str>analytics</str>
-      <str>highlight</str>
-      <str>debug</str>
-      <str>expand</str>
-    </arr>
-  </requestHandler>
-
-  <searchComponent name="analytics" class="org.apache.solr.handler.component.AnalyticsComponent" />
-
-</config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bee8d7cc/solr/contrib/analytics/src/test-files/solr/collection1/conf/solrconfig-basic.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/test-files/solr/collection1/conf/solrconfig-basic.xml b/solr/contrib/analytics/src/test-files/solr/collection1/conf/solrconfig-basic.xml
new file mode 100644
index 0000000..604bb17
--- /dev/null
+++ b/solr/contrib/analytics/src/test-files/solr/collection1/conf/solrconfig-basic.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" ?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<config>
+  <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
+  <dataDir>${solr.data.dir:}</dataDir>
+  <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
+  <schemaFactory class="ClassicIndexSchemaFactory"/>
+
+  <requestHandler name="standard" class="solr.StandardRequestHandler">
+    <arr name="components">
+      <str>query</str>
+      <str>facet</str>
+      <str>analytics</str>
+      <str>highlight</str>
+      <str>debug</str>
+      <str>expand</str>
+    </arr>
+  </requestHandler>
+
+  <searchComponent name="analytics" class="org.apache.solr.handler.component.AnalyticsComponent" />
+
+</config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bee8d7cc/solr/contrib/analytics/src/test/org/apache/solr/analytics/NoFacetTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/test/org/apache/solr/analytics/NoFacetTest.java b/solr/contrib/analytics/src/test/org/apache/solr/analytics/NoFacetTest.java
index 7b67d00..ae935fb 100644
--- a/solr/contrib/analytics/src/test/org/apache/solr/analytics/NoFacetTest.java
+++ b/solr/contrib/analytics/src/test/org/apache/solr/analytics/NoFacetTest.java
@@ -60,7 +60,7 @@ public class NoFacetTest extends AbstractAnalyticsStatsTest {
   
   @BeforeClass
   public static void beforeClass() throws Exception {
-    initCore("solrconfig-analytics.xml","schema-analytics.xml");
+    initCore("solrconfig-basic.xml","schema-analytics.xml");
     h.update("<delete><query>*:*</query></delete>");
     defaults.put("int_id", new Integer(0));
     defaults.put("long_ld", new Long(0));

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bee8d7cc/solr/contrib/analytics/src/test/org/apache/solr/analytics/expression/ExpressionTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/test/org/apache/solr/analytics/expression/ExpressionTest.java b/solr/contrib/analytics/src/test/org/apache/solr/analytics/expression/ExpressionTest.java
index 245ea1c..4a3276b 100644
--- a/solr/contrib/analytics/src/test/org/apache/solr/analytics/expression/ExpressionTest.java
+++ b/solr/contrib/analytics/src/test/org/apache/solr/analytics/expression/ExpressionTest.java
@@ -48,7 +48,7 @@ public class ExpressionTest extends AbstractAnalyticsStatsTest {
 
   @BeforeClass
   public static void beforeClass() throws Exception {
-    initCore("solrconfig-analytics.xml", "schema-analytics.xml");
+    initCore("solrconfig-basic.xml", "schema-analytics.xml");
     h.update("<delete><query>*:*</query></delete>");
 
     for (int j = 0; j < NUM_LOOPS; ++j) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bee8d7cc/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/AbstractAnalyticsFacetTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/AbstractAnalyticsFacetTest.java b/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/AbstractAnalyticsFacetTest.java
index dd331fd..dab68a3 100644
--- a/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/AbstractAnalyticsFacetTest.java
+++ b/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/AbstractAnalyticsFacetTest.java
@@ -312,19 +312,4 @@ public class AbstractAnalyticsFacetTest extends SolrTestCaseJ4 {
       IOUtils.closeWhileHandlingException(file, in);
     }
   }
-  
-  protected void removeNodes(String xPath, List<Double> string) throws XPathExpressionException {
-    NodeList missingNodes = getNodes(xPath);
-    List<Double> result = new ArrayList<Double>();
-    for (int idx = 0; idx < missingNodes.getLength(); ++idx) {
-      result.add(Double.parseDouble(missingNodes.item(idx).getTextContent()));
-    }
-    string.removeAll(result);
-  }
-
-  protected NodeList getNodes(String xPath) throws XPathExpressionException {
-    StringBuilder sb = new StringBuilder(xPath);
-    return (NodeList) xPathFact.newXPath().compile(sb.toString()).evaluate(doc, XPathConstants.NODESET);
-  }
-  
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bee8d7cc/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FacetSortingTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FacetSortingTest.java b/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FacetSortingTest.java
deleted file mode 100644
index 0751b63..0000000
--- a/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FacetSortingTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.apache.solr.analytics.facet;
-
-import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
-import org.apache.solr.analytics.AbstractAnalyticsStatsTest;
-import org.apache.solr.analytics.expression.ExpressionTest;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-@SuppressCodecs({"Lucene3x","Lucene40","Lucene41","Lucene42","Appending","Asserting"})
-public class FacetSortingTest extends AbstractAnalyticsStatsTest {
-  private static String fileName = "/analytics/requestFiles/facetSorting.txt";
-
-  @BeforeClass
-  public static void beforeClass() throws Exception {
-    initCore("solrconfig-analytics.xml", "schema-analytics.xml");
-    h.update("<delete><query>*:*</query></delete>");
-
-    // The data set below is so generated that in bucket corresponding fieldFacet B, double_dd column has null values 
-    // and in bucket C corresponding to fieldFacet C has null values for column long_ld. 
-    // FieldFaceting occurs on string_sd field
-    assertU(adoc("id", "1001", "string_sd", "A", "double_dd", "" + 3, "long_ld", "" + 1));
-    assertU(adoc("id", "1002", "string_sd", "A", "double_dd", "" + 25, "long_ld", "" + 2));
-    assertU(adoc("id", "1003", "string_sd", "B", "long_ld", "" + 3));
-    assertU(adoc("id", "1004", "string_sd", "B", "long_ld", "" + 4));
-    assertU(adoc("id", "1005", "string_sd", "C",                       "double_dd", "" + 17));
-    
-    assertU(commit());
-    String response = h.query(request(fileToStringArr(ExpressionTest.class, fileName)));
-    System.out.println("Response=" + response);
-    setResponse(response);
-  }
-
-  @Test
-  public void addTest() throws Exception {
-    Double minResult = (Double) getStatResult("ar", "min", VAL_TYPE.DOUBLE);
-    Long maxResult = (Long) getStatResult("ar", "max", VAL_TYPE.LONG);
-    assertEquals(Double.valueOf(minResult), Double.valueOf(3.0));
-    assertEquals(Long.valueOf(maxResult),Long.valueOf(4));
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bee8d7cc/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FieldFacetExtrasTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FieldFacetExtrasTest.java b/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FieldFacetExtrasTest.java
index afa0c3c..fc7df4b 100644
--- a/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FieldFacetExtrasTest.java
+++ b/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FieldFacetExtrasTest.java
@@ -44,7 +44,7 @@ public class FieldFacetExtrasTest extends AbstractAnalyticsFacetTest {
   
   @BeforeClass
   public static void beforeClass() throws Exception {
-    initCore("solrconfig-analytics.xml","schema-analytics.xml");
+    initCore("solrconfig-basic.xml","schema-analytics.xml");
     h.update("<delete><query>*:*</query></delete>");
 
     //INT

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bee8d7cc/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FieldFacetTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FieldFacetTest.java b/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FieldFacetTest.java
index 2230b02..bf67213 100644
--- a/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FieldFacetTest.java
+++ b/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/FieldFacetTest.java
@@ -24,7 +24,6 @@ import java.util.List;
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
-import org.w3c.dom.Node;
 
 
 public class FieldFacetTest extends AbstractAnalyticsFacetTest{
@@ -88,7 +87,7 @@ public class FieldFacetTest extends AbstractAnalyticsFacetTest{
   
   @BeforeClass
   public static void beforeClass() throws Exception {
-    initCore("solrconfig-analytics.xml","schema-analytics.xml");
+    initCore("solrconfig-basic.xml","schema-analytics.xml");
     h.update("<delete><query>*:*</query></delete>");
     
     defaults.put("int", new Integer(0));
@@ -1038,33 +1037,31 @@ public class FieldFacetTest extends AbstractAnalyticsFacetTest{
   public void missingFacetTest() throws Exception { 
     //int MultiDate
     String xPath = "/response/lst[@name='stats']/lst[@name='missingf']/lst[@name='fieldFacets']/lst[@name='date_dtdm']/lst[@name='(MISSING)']";
-    Node missingNodeXPath = getNode(xPath);
-    assertNotNull(getRawResponse(), missingNodeXPath);
+    assertNotNull(getRawResponse(), getNode(xPath));
 
     ArrayList<Double> string = getDoubleList("missingf", "fieldFacets", "date_dtdm", "double", "mean");
-    super.removeNodes(xPath, string);
+    string.remove(0);
     ArrayList<Double> stringTest = calculateNumberStat(multiDateTestStart, "mean");
     assertEquals(getRawResponse(), string,stringTest);
-
+    
     //Int String
     xPath = "/response/lst[@name='stats']/lst[@name='missingf']/lst[@name='fieldFacets']/lst[@name='string_sd']/lst[@name='(MISSING)']";
-    missingNodeXPath = getNode(xPath);
-    String missingNodeXPathStr = xPath;
-    assertNotNull(getRawResponse(), missingNodeXPath);
+    assertNotNull(getRawResponse(), getNode(xPath));
 
     xPath = "/response/lst[@name='stats']/lst[@name='missingf']/lst[@name='fieldFacets']/lst[@name='string_sd']/lst[@name='str0']";
     assertNull(getRawResponse(), getNode(xPath));
-
     List<Double> intString = getDoubleList("missingf", "fieldFacets", "string_sd", "double", "mean");
-    removeNodes(missingNodeXPathStr, intString);
+    intString.remove(0);
     ArrayList<Double> intStringTest = calculateNumberStat(intStringTestStart, "mean");
     assertEquals(getRawResponse(), intString,intStringTest);
-
+    
     //Int Date
     Collection<Double> intDate = getDoubleList("missingf", "fieldFacets", "date_dtd", "double", "mean");
     ArrayList<ArrayList<Double>> intDateMissingTestStart = (ArrayList<ArrayList<Double>>) intDateTestStart.clone();
     ArrayList<Double> intDateTest = calculateNumberStat(intDateMissingTestStart, "mean");
     assertEquals(getRawResponse(),intDate,intDateTest);
+    
+    
   }
 
   private void checkStddevs(ArrayList<Double> list1, ArrayList<Double> list2) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bee8d7cc/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/QueryFacetTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/QueryFacetTest.java b/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/QueryFacetTest.java
index 99ce02d..f62a82b 100644
--- a/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/QueryFacetTest.java
+++ b/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/QueryFacetTest.java
@@ -35,7 +35,7 @@ public class QueryFacetTest extends AbstractAnalyticsFacetTest {
 
   @BeforeClass
   public static void beforeClass() throws Exception {
-    initCore("solrconfig-analytics.xml","schema-analytics.xml");
+    initCore("solrconfig-basic.xml","schema-analytics.xml");
   }
 
   @SuppressWarnings("unchecked")

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bee8d7cc/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/RangeFacetTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/RangeFacetTest.java b/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/RangeFacetTest.java
index cf5e36b..cda8202 100644
--- a/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/RangeFacetTest.java
+++ b/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/RangeFacetTest.java
@@ -46,7 +46,7 @@ public class RangeFacetTest extends AbstractAnalyticsFacetTest {
   
   @BeforeClass
   public static void beforeClass() throws Exception {
-    initCore("solrconfig-analytics.xml","schema-analytics.xml");
+    initCore("solrconfig-basic.xml","schema-analytics.xml");
     h.update("<delete><query>*:*</query></delete>");
     
     //INT

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bee8d7cc/solr/contrib/analytics/src/test/org/apache/solr/analytics/util/valuesource/FunctionTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/test/org/apache/solr/analytics/util/valuesource/FunctionTest.java b/solr/contrib/analytics/src/test/org/apache/solr/analytics/util/valuesource/FunctionTest.java
index f9a9620..5981cc0 100644
--- a/solr/contrib/analytics/src/test/org/apache/solr/analytics/util/valuesource/FunctionTest.java
+++ b/solr/contrib/analytics/src/test/org/apache/solr/analytics/util/valuesource/FunctionTest.java
@@ -35,7 +35,7 @@ public class FunctionTest extends AbstractAnalyticsStatsTest {
 
   @BeforeClass
   public static void beforeClass() throws Exception {
-    initCore("solrconfig-analytics.xml","schema-analytics.xml");
+    initCore("solrconfig-basic.xml","schema-analytics.xml");
     h.update("<delete><query>*:*</query></delete>");
     
     for (int j = 0; j < NUM_LOOPS; ++j) {