You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ho...@apache.org on 2011/03/01 02:09:57 UTC

svn commit: r1075603 - in /lucene/dev/trunk/solr/src: common/org/apache/solr/common/params/FacetParams.java java/org/apache/solr/request/SimpleFacets.java test/org/apache/solr/request/SimpleFacetsTest.java

Author: hossman
Date: Tue Mar  1 01:09:57 2011
New Revision: 1075603

URL: http://svn.apache.org/viewvc?rev=1075603&view=rev
Log:
SOLR-1240: facet.range.include now defaults to 'lower' (facet.date.include still defaults to lower,upper,edge)

Modified:
    lucene/dev/trunk/solr/src/common/org/apache/solr/common/params/FacetParams.java
    lucene/dev/trunk/solr/src/java/org/apache/solr/request/SimpleFacets.java
    lucene/dev/trunk/solr/src/test/org/apache/solr/request/SimpleFacetsTest.java

Modified: lucene/dev/trunk/solr/src/common/org/apache/solr/common/params/FacetParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/common/org/apache/solr/common/params/FacetParams.java?rev=1075603&r1=1075602&r2=1075603&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/common/org/apache/solr/common/params/FacetParams.java (original)
+++ lucene/dev/trunk/solr/src/common/org/apache/solr/common/params/FacetParams.java Tue Mar  1 01:09:57 2011
@@ -180,12 +180,13 @@ public interface FacetParams {
    * exclusive of their end points.
    * </p>
    * <p>
-   * The default value if none are specified is: [lower,upper,edge]
+   * The default value if none are specified is: [lower,upper,edge] <i>(NOTE: This is different then FACET_RANGE_INCLUDE)</i>
    * </p>
    * <p>
    * Can be overriden on a per field basis.
    * </p>
    * @see FacetRangeInclude
+   * @see #FACET_RANGE_INCLUDE
    */
   public static final String FACET_DATE_INCLUDE = FACET_DATE + ".include";
 
@@ -230,13 +231,6 @@ public interface FacetParams {
    * Can be overriden on a per field basis.
    */
   public static final String FACET_RANGE_OTHER = FACET_RANGE + ".other";
-  /**
-   * String indicating whether ranges for numerical range faceting 
-   * should be exclusive or inclusive. By default both the start and
-   * end point are inclusive.
-   * Can be overriden on a per field basis.
-   * @see FacetNumberExclusive
-   */
 
   /**
    * <p>
@@ -245,7 +239,7 @@ public interface FacetParams {
    * exclusive of their end points.
    * </p>
    * <p>
-   * The default value if none are specified is: [lower,upper,edge]
+   * The default value if none are specified is: lower
    * </p>
    * <p>
    * Can be overriden on a per field basis.
@@ -335,15 +329,16 @@ public interface FacetParams {
     }
     /**
      * Convinience method for parsing the param value according to the 
-     * correct semantics.
+     * correct semantics and applying the default of "LOWER"
      */
     public static EnumSet<FacetRangeInclude> parseParam(final String[] param) {
       // short circut for default behavior
       if (null == param || 0 == param.length ) 
-        return EnumSet.of(LOWER, UPPER, EDGE);
+        return EnumSet.of(LOWER);
 
       // build up set containing whatever is specified
-      final EnumSet<FacetRangeInclude> include = EnumSet.noneOf(FacetRangeInclude.class);
+      final EnumSet<FacetRangeInclude> include 
+        = EnumSet.noneOf(FacetRangeInclude.class);
       for (final String o : param) {
         include.add(FacetRangeInclude.get(o));
       }

Modified: lucene/dev/trunk/solr/src/java/org/apache/solr/request/SimpleFacets.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/java/org/apache/solr/request/SimpleFacets.java?rev=1075603&r1=1075602&r2=1075603&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/java/org/apache/solr/request/SimpleFacets.java (original)
+++ lucene/dev/trunk/solr/src/java/org/apache/solr/request/SimpleFacets.java Tue Mar  1 01:09:57 2011
@@ -857,8 +857,16 @@ public class SimpleFacets {
 
     final int minCount = params.getFieldInt(f,FacetParams.FACET_MINCOUNT, 0);
 
-    final EnumSet<FacetRangeInclude> include = FacetRangeInclude.parseParam
-        (params.getFieldParams(f,FacetParams.FACET_DATE_INCLUDE));
+    String[] iStrs = params.getFieldParams(f,FacetParams.FACET_DATE_INCLUDE);
+    // Legacy support for default of [lower,upper,edge] for date faceting
+    // this is not handled by FacetRangeInclude.parseParam because
+    // range faceting has differnet defaults
+    final EnumSet<FacetRangeInclude> include = 
+      (null == iStrs || 0 == iStrs.length ) ?
+      EnumSet.of(FacetRangeInclude.LOWER, 
+                 FacetRangeInclude.UPPER, 
+                 FacetRangeInclude.EDGE)
+      : FacetRangeInclude.parseParam(iStrs);
 
     try {
       Date low = start;

Modified: lucene/dev/trunk/solr/src/test/org/apache/solr/request/SimpleFacetsTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/test/org/apache/solr/request/SimpleFacetsTest.java?rev=1075603&r1=1075602&r2=1075603&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/test/org/apache/solr/request/SimpleFacetsTest.java (original)
+++ lucene/dev/trunk/solr/src/test/org/apache/solr/request/SimpleFacetsTest.java Tue Mar  1 01:09:57 2011
@@ -370,6 +370,12 @@ public class SimpleFacetsTest extends So
     final String pre = "//lst[@name='"+b+"']/lst[@name='"+f+"']" + c;
     final String meta = pre + (rangeMode ? "/../" : "");
 
+    
+    // date faceting defaults to include both endpoints, 
+    // range faceting defaults to including only lower
+    // doc exists with value @ 00:00:00.000 on July5
+    final String jul4 = rangeMode ? "[.='1'  ]" : "[.='2'  ]";
+
     assertQ("check counts for month of facet by day",
             req( "q", "*:*"
                 ,"rows", "0"
@@ -381,12 +387,10 @@ public class SimpleFacetsTest extends So
                 ,p+".other", "all"
                 )
             ,"*[count("+pre+"/int)="+(rangeMode ? 31 : 34)+"]"
-            ,pre+"/int[@name='1976-07-01T00:00:00Z'][.='0'  ]"
-            ,pre+"/int[@name='1976-07-02T00:00:00Z'][.='0'  ]"
+            ,pre+"/int[@name='1976-07-01T00:00:00Z'][.='0']"
+            ,pre+"/int[@name='1976-07-02T00:00:00Z'][.='0']"
             ,pre+"/int[@name='1976-07-03T00:00:00Z'][.='2'  ]"
-            // july4th = 2 because exists doc @ 00:00:00.000 on July5
-            // (date faceting is inclusive)
-            ,pre+"/int[@name='1976-07-04T00:00:00Z'][.='2'  ]"
+            ,pre+"/int[@name='1976-07-04T00:00:00Z']" + jul4
             ,pre+"/int[@name='1976-07-05T00:00:00Z'][.='2'  ]"
             ,pre+"/int[@name='1976-07-06T00:00:00Z'][.='0']"
             ,pre+"/int[@name='1976-07-07T00:00:00Z'][.='0']"
@@ -433,9 +437,7 @@ public class SimpleFacetsTest extends So
                 )
             ,"*[count("+pre+"/int)="+(rangeMode ? 8 : 11)+"]"
             ,pre+"/int[@name='1976-07-03T00:00:00Z'][.='2'  ]"
-            // july4th = 2 because exists doc @ 00:00:00.000 on July5
-            // (date faceting is inclusive)
-            ,pre+"/int[@name='1976-07-04T00:00:00Z'][.='2'  ]"
+            ,pre+"/int[@name='1976-07-04T00:00:00Z']" + jul4
             ,pre+"/int[@name='1976-07-05T00:00:00Z'][.='2'  ]"
             ,pre+"/int[@name='1976-07-12T00:00:00Z'][.='1'  ]"
             ,pre+"/int[@name='1976-07-13T00:00:00Z'][.='1'  ]"
@@ -458,11 +460,9 @@ public class SimpleFacetsTest extends So
                 ,p+".other", "all"
                 ,"f." + f + ".facet.mincount", "2"
                 )
-            ,"*[count("+pre+"/int)="+(rangeMode ? 4 : 7)+"]"
+            ,"*[count("+pre+"/int)="+(rangeMode ? 3 : 7)+"]"
             ,pre+"/int[@name='1976-07-03T00:00:00Z'][.='2'  ]"
-            // july4th = 2 because exists doc @ 00:00:00.000 on July5
-            // (date faceting is inclusive)
-            ,pre+"/int[@name='1976-07-04T00:00:00Z'][.='2'  ]"
+            ,pre+(rangeMode ? "" : "/int[@name='1976-07-04T00:00:00Z']" +jul4)
             ,pre+"/int[@name='1976-07-05T00:00:00Z'][.='2'  ]"
             ,pre+"/int[@name='1976-07-15T00:00:00Z'][.='2'  ]"
             ,meta+"/int[@name='before' ][.='2']"
@@ -482,11 +482,11 @@ public class SimpleFacetsTest extends So
                 )
             ,"*[count("+pre+"/int)="+(rangeMode ? 2 : 5)+"]"
             ,pre+"/int[@name='1976-07-05T00:00:00Z'][.='2'  ]"
-            ,pre+"/int[@name='1976-07-06T00:00:00Z'][.='0'  ]"
+            ,pre+"/int[@name='1976-07-06T00:00:00Z'][.='0']"
             
             ,meta+"/int[@name='before' ][.='5']"
             );
-    assertQ("check after is not inclusive of lower bound by default",
+    assertQ("check after is not inclusive of lower bound by default (for dates)",
             req("q", "*:*"
                 ,"rows", "0"
                 ,"facet", "true"
@@ -498,9 +498,9 @@ public class SimpleFacetsTest extends So
                 )
             ,"*[count("+pre+"/int)="+(rangeMode ? 2 : 5)+"]"
             ,pre+"/int[@name='1976-07-03T00:00:00Z'][.='2'  ]"
-            ,pre+"/int[@name='1976-07-04T00:00:00Z'][.='2'  ]"
+            ,pre+"/int[@name='1976-07-04T00:00:00Z']" + jul4
             
-            ,meta+"/int[@name='after' ][.='8']"
+            ,meta+"/int[@name='after' ][.='"+(rangeMode ? 9 : 8)+"']"
             );