You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by eh...@apache.org on 2013/05/21 19:57:30 UTC

svn commit: r1484892 - in /lucene/dev/branches/lucene_solr_4_3: ./ dev-tools/ lucene/ lucene/analysis/ lucene/analysis/common/src/test/org/apache/lucene/analysis/util/ lucene/analysis/icu/src/java/org/apache/lucene/collation/ lucene/backwards/ lucene/b...

Author: ehatcher
Date: Tue May 21 17:57:29 2013
New Revision: 1484892

URL: http://svn.apache.org/r1484892
Log:
SOLR-4842: Merge from branch_4x

Modified:
    lucene/dev/branches/lucene_solr_4_3/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/dev-tools/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/BUILD.txt   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/CHANGES.txt   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/JRE_VERSION_MIGRATION.txt   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/LICENSE.txt   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/MIGRATE.txt   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/NOTICE.txt   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/README.txt   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/SYSTEM_REQUIREMENTS.txt   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/analysis/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/test/org/apache/lucene/analysis/util/BaseTokenStreamFactoryTestCase.java   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/analysis/icu/src/java/org/apache/lucene/collation/ICUCollationKeyFilterFactory.java   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/backwards/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/benchmark/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/build.xml   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/classification/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/classification/build.xml   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/classification/ivy.xml   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/classification/src/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/codecs/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/common-build.xml   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/core/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/core/src/test/org/apache/lucene/index/index.40.cfs.zip   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/core/src/test/org/apache/lucene/index/index.40.nocfs.zip   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/core/src/test/org/apache/lucene/index/index.40.optimized.cfs.zip   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/core/src/test/org/apache/lucene/index/index.40.optimized.nocfs.zip   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/core/src/test/org/apache/lucene/search/TestSort.java   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/core/src/test/org/apache/lucene/search/TestSortDocValues.java   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/core/src/test/org/apache/lucene/search/TestSortRandom.java   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/core/src/test/org/apache/lucene/search/TestTopFieldCollector.java   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/core/src/test/org/apache/lucene/search/TestTotalHitCountCollector.java   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/demo/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/facet/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/grouping/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/highlighter/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/ivy-settings.xml   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/join/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/licenses/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/memory/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/misc/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/module-build.xml   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/queries/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/queries/src/test/org/apache/lucene/queries/function/TestFunctionQuerySort.java   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/queryparser/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/sandbox/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/site/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/spatial/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/suggest/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/test-framework/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/lucene/tools/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/CHANGES.txt
    lucene/dev/branches/lucene_solr_4_3/solr/LICENSE.txt   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/NOTICE.txt   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/README.txt   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/SYSTEM_REQUIREMENTS.txt   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/build.xml   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/cloud-dev/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/common-build.xml   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/contrib/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/core/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
    lucene/dev/branches/lucene_solr_4_3/solr/core/src/test/org/apache/solr/core/TestConfig.java   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/core/src/test/org/apache/solr/request/TestFaceting.java
    lucene/dev/branches/lucene_solr_4_3/solr/example/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/licenses/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/licenses/httpclient-LICENSE-ASL.txt   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/licenses/httpclient-NOTICE.txt   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/licenses/httpcore-LICENSE-ASL.txt   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/licenses/httpcore-NOTICE.txt   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/licenses/httpmime-LICENSE-ASL.txt   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/licenses/httpmime-NOTICE.txt   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/scripts/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/site/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/solrj/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/test-framework/   (props changed)
    lucene/dev/branches/lucene_solr_4_3/solr/webapp/   (props changed)

Modified: lucene/dev/branches/lucene_solr_4_3/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_3/solr/CHANGES.txt?rev=1484892&r1=1484891&r2=1484892&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_3/solr/CHANGES.txt (original)
+++ lucene/dev/branches/lucene_solr_4_3/solr/CHANGES.txt Tue May 21 17:57:29 2013
@@ -79,6 +79,9 @@ Bug Fixes
 
 * SOLR-4734: Leader election fails with an NPE if there is no UpdateLog.
  (Mark Miller, Alexander Eibner)
+ 
+* SOLR-4842: Fix facet.field local params from affecting other facet.field's.
+  (ehatcher, hossman) 
 
 Other Changes
 ----------------------

Modified: lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/request/SimpleFacets.java?rev=1484892&r1=1484891&r2=1484892&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/request/SimpleFacets.java (original)
+++ lucene/dev/branches/lucene_solr_4_3/solr/core/src/java/org/apache/solr/request/SimpleFacets.java Tue May 21 17:57:29 2013
@@ -149,6 +149,8 @@ public class SimpleFacets {
     threads = -1;
 
     if (localParams == null) {
+      params = orig;
+      required = new RequiredSolrParams(params);
       return;
     }
     params = SolrParams.wrapDefaults(localParams, orig);

Modified: lucene/dev/branches/lucene_solr_4_3/solr/core/src/test/org/apache/solr/request/TestFaceting.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_3/solr/core/src/test/org/apache/solr/request/TestFaceting.java?rev=1484892&r1=1484891&r2=1484892&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_3/solr/core/src/test/org/apache/solr/request/TestFaceting.java (original)
+++ lucene/dev/branches/lucene_solr_4_3/solr/core/src/test/org/apache/solr/request/TestFaceting.java Tue May 21 17:57:29 2013
@@ -495,6 +495,122 @@ public class TestFaceting extends SolrTe
               ,"//lst[@name='bar']/int[@name='Chauvinist'][.='1']"
               ,"//lst[@name='bar']/int[@name='Obnoxious'][.='1']"
               );
+
+      assertQ("localparams in one facet variant should not affect defaults in another: facet.sort vs facet.missing",
+                  req("q", "id:[42 TO 47]"
+                          ,"rows","0"
+                          ,"facet", "true"
+                          ,"fq", "id:[42 TO 45]"
+                          ,"facet.field", "{!key=foo " +
+                              "facet.sort=index" +
+                          "}"+fname
+                          ,"facet.field", "{!key=bar " +
+                              "facet.missing=true" +
+                          "}"+fname
+                          )
+                      // foo is in index order w/o missing
+                      ,"*[count(//lst[@name='foo']/int)=4]"
+                  ,"//lst[@name='foo']/int[1][@name='Chauvinist'][.='1']"
+                  ,"//lst[@name='foo']/int[2][@name='Obnoxious'][.='1']"
+                  ,"//lst[@name='foo']/int[3][@name='Pig'][.='0']"
+                  ,"//lst[@name='foo']/int[4][@name='Tool'][.='2']"
+                  // bar is in count order by default and includes missing
+                  ,"*[count(//lst[@name='bar']/int)=5]"
+                  ,"//lst[@name='bar']/int[1][@name='Tool'][.='2']"
+                  // don't assume tie breaker for slots 3 & 4, behavior undefined?
+                  ,"//lst[@name='bar']/int[4][@name='Pig'][.='0']"
+                  ,"//lst[@name='bar']/int[5][not(@name)][.='1']"
+                  );
+
+      assertQ("localparams in one facet variant should not affect defaults in another: facet.mincount",
+                  req("q", "id:[42 TO 47]"
+                          ,"rows","0"
+                          ,"facet", "true"
+                          ,"fq", "id:[42 TO 45]"
+                          ,"facet.field", "{!key=foo " +
+                              "facet.mincount=2" +
+                          "}"+fname
+                          ,"facet.field", "{!key=bar}"+fname
+                          )
+                      // only Tool for foo
+                      ,"*[count(//lst[@name='foo']/int)=1]"
+                  ,"//lst[@name='foo']/int[1][@name='Tool'][.='2']"
+                  // all for bar
+                  ,"*[count(//lst[@name='bar']/int)=4]"
+                  ,"//lst[@name='bar']/int[1][@name='Tool'][.='2']"
+                  // don't assume tie breaker for slots 3 & 4, behavior undefined?
+                  ,"//lst[@name='bar']/int[4][@name='Pig'][.='0']"
+                  );
+
+      assertQ("localparams in one facet variant should not affect defaults in another: facet.missing",
+                  req("q", "id:[42 TO 47]"
+                          ,"rows","0"
+                          ,"facet", "true"
+                          ,"fq", "id:[42 TO 45]"
+                          ,"facet.field", "{!key=foo " +
+                              "facet.missing=true" +
+                          "}"+fname
+                          ,"facet.field", "{!key=bar}"+fname
+                          )
+                      // foo includes missing
+                      ,"*[count(//lst[@name='foo']/int)=5]"
+                  ,"//lst[@name='foo']/int[1][@name='Tool'][.='2']"
+                  // don't assume tie breaker for slots 3 & 4, behavior undefined?
+                  ,"//lst[@name='foo']/int[4][@name='Pig'][.='0']"
+                  ,"//lst[@name='foo']/int[5][not(@name)][.='1']"
+                  // bar does not
+                  ,"*[count(//lst[@name='bar']/int)=4]"
+                  ,"//lst[@name='bar']/int[1][@name='Tool'][.='2']"
+                  // don't assume tie breaker for slots 3 & 4, behavior undefined?
+                  ,"//lst[@name='bar']/int[4][@name='Pig'][.='0']"
+                  );
+
+      assertQ("checking facets when local facet.prefix param used after regular/raw field faceting",
+          req("q", "*:*"
+              ,"facet", "true"
+              ,"facet.field", fname
+              ,"facet.field", "{!key=foo " +
+              "facet.prefix=T "+
+              "}"+fname
+          )
+          ,"*[count(//doc)=6]"
+          ,"*[count(//lst[@name='" + fname + "']/int)=4]"
+          ,"*[count(//lst[@name='foo']/int)=1]"
+          ,"//lst[@name='foo']/int[@name='Tool'][.='2']"
+      );
+
+      assertQ("checking facets when local facet.prefix param used before regular/raw field faceting",
+          req("q", "*:*"
+              ,"facet", "true"
+              ,"facet.field", "{!key=foo " +
+              "facet.prefix=T "+
+              "}"+fname
+              ,"facet.field", fname
+          )
+          ,"*[count(//doc)=6]"
+          ,"*[count(//lst[@name='" + fname + "']/int)=4]"
+          ,"*[count(//lst[@name='foo']/int)=1]"
+          ,"//lst[@name='foo']/int[@name='Tool'][.='2']"
+      );
+
+      final String foo_range_facet = "{!key=foo facet.range.gap=2}val_i";
+      final String val_range_facet = "val_i";
+      for (boolean toggle : new boolean[] { true, false }) {
+          assertQ("local gap param mixed w/raw range faceting: " + toggle,
+                      req("q", "*:*"
+                              ,"facet", "true"
+                              ,"rows", "0"
+                              ,"facet.range.start", "0"
+                              ,"facet.range.end", "10"
+                              ,"facet.range.gap", "1"
+                              ,"facet.range", (toggle ? foo_range_facet : val_range_facet)
+                              ,"facet.range", (toggle ? val_range_facet : foo_range_facet)
+                              )
+                          ,"*[count(//lst[@name='val_i']/lst[@name='counts']/int)=10]"
+                      ,"*[count(//lst[@name='foo']/lst[@name='counts']/int)=5]"
+                      );
+        }
+
       clearIndex();
       assertU(commit());
   }