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 2010/07/30 01:54:55 UTC
svn commit: r980610 [1/2] - in /lucene/dev/branches/branch_3x/solr: ./
example/ lib/ src/ src/common/org/apache/solr/common/
src/common/org/apache/solr/common/params/ src/java/org/apache/solr/analysis/
src/java/org/apache/solr/handler/component/ src/ja...
Author: hossman
Date: Thu Jul 29 23:54:54 2010
New Revision: 980610
URL: http://svn.apache.org/viewvc?rev=980610&view=rev
Log:
SOLR-1240: merging Range Faceting changes from trunk. this not only included r980555 and r980592 but because there has been a lot of refactoring to the way SimpleFacetsTest works on trunk, i just merged all of r926572:980555 for that single file
Modified:
lucene/dev/branches/branch_3x/solr/ (props changed)
lucene/dev/branches/branch_3x/solr/CHANGES.txt
lucene/dev/branches/branch_3x/solr/example/ (props changed)
lucene/dev/branches/branch_3x/solr/lib/commons-httpclient-3.1.jar (props changed)
lucene/dev/branches/branch_3x/solr/lib/jcl-over-slf4j-1.5.5.jar (props changed)
lucene/dev/branches/branch_3x/solr/src/ (props changed)
lucene/dev/branches/branch_3x/solr/src/common/org/apache/solr/common/ (props changed)
lucene/dev/branches/branch_3x/solr/src/common/org/apache/solr/common/params/FacetParams.java
lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/analysis/SynonymFilter.java (props changed)
lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/analysis/SynonymMap.java (props changed)
lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/handler/component/FacetComponent.java
lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/request/SimpleFacets.java
lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/response/ (props changed)
lucene/dev/branches/branch_3x/solr/src/maven/solr-core-pom.xml.template (props changed)
lucene/dev/branches/branch_3x/solr/src/maven/solr-solrj-pom.xml.template (props changed)
lucene/dev/branches/branch_3x/solr/src/solrj/org/ (props changed)
lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/ConvertedLegacyTest.java
lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/analysis/TestRemoveDuplicatesTokenFilter.java (props changed)
lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/analysis/TestTrimFilter.java (props changed)
lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/client/ (props changed)
lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/request/SimpleFacetsTest.java (contents, props changed)
lucene/dev/branches/branch_3x/solr/src/test/test-files/solr/conf/schema.xml
lucene/dev/branches/branch_3x/solr/src/webapp/src/org/apache/solr/client/solrj/embedded/ (props changed)
lucene/dev/branches/branch_3x/solr/src/webapp/web/admin/ (props changed)
Propchange: lucene/dev/branches/branch_3x/solr/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jul 29 23:54:54 2010
@@ -1,4 +1,4 @@
-/lucene/dev/trunk/solr:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,960719,961941,962555,962714,963372,963654,963720,
963781,963873,963888,963906,963909,963920,964019,964054,964267,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501
+/lucene/dev/trunk/solr:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,960719,961941,962555,962714,963372,963654,963720,
963781,963873,963888,963906,963909,963920,964019,964054,964267,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501,980555,980592
/lucene/java/branches/lucene_2_4/solr:748824
/lucene/java/branches/lucene_2_9/solr:817269-818600,825998,829134,829881,831036,896850,909334
/lucene/java/branches/lucene_2_9_back_compat_tests/solr:818601-821336
Modified: lucene/dev/branches/branch_3x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/solr/CHANGES.txt?rev=980610&r1=980609&r2=980610&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_3x/solr/CHANGES.txt Thu Jul 29 23:54:54 2010
@@ -180,6 +180,11 @@ New Features
* SOLR-1925: Add CSVResponseWriter (use wt=csv) that returns the list of documents
in CSV format. (Chris Mattmann, yonik)
+* SOLR-1240: "Range Faceting" has been added. This is a generalization
+ of the existing "Date Faceting" logic so that it now supports any
+ all stock numeric field types that support range queries in addition
+ to dates.
+ (Gijs Kunze, hossman)
Optimizations
----------------------
Propchange: lucene/dev/branches/branch_3x/solr/example/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jul 29 23:54:54 2010
@@ -1,4 +1,4 @@
-/lucene/dev/trunk/solr/example:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,961821,961941,962555,962714,963372,963654
,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501
+/lucene/dev/trunk/solr/example:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,961821,961941,962555,962714,963372,963654
,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501,980555,980592
/lucene/java/branches/lucene_2_4/solr/example:748824
/lucene/java/branches/lucene_2_9/solr/example:817269-818600,825998,829134,829881,831036,896850,909334
/lucene/java/branches/lucene_2_9_back_compat_tests/solr/example:818601-821336
Propchange: lucene/dev/branches/branch_3x/solr/lib/commons-httpclient-3.1.jar
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jul 29 23:54:54 2010
@@ -1,2 +1,2 @@
-/lucene/dev/trunk/solr/lib/commons-httpclient-3.1.jar:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,960719,961941,9625
55,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501
+/lucene/dev/trunk/solr/lib/commons-httpclient-3.1.jar:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,960719,961941,9625
55,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501,980555,980592
/lucene/solr/trunk/lib/commons-httpclient-3.1.jar:922950-923910,923912-925091
Propchange: lucene/dev/branches/branch_3x/solr/lib/jcl-over-slf4j-1.5.5.jar
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jul 29 23:54:54 2010
@@ -1,2 +1,2 @@
-/lucene/dev/trunk/solr/lib/jcl-over-slf4j-1.5.5.jar:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,960719,961941,962555
,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501
+/lucene/dev/trunk/solr/lib/jcl-over-slf4j-1.5.5.jar:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,960719,961941,962555
,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501,980555,980592
/lucene/solr/trunk/lib/jcl-over-slf4j-1.5.5.jar:922950-923910,923912-925091
Propchange: lucene/dev/branches/branch_3x/solr/src/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jul 29 23:54:54 2010
@@ -1,4 +1,4 @@
-/lucene/dev/trunk/solr/src:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,961821,961941,962555,962714,963372,963654,963
720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501
+/lucene/dev/trunk/solr/src:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,961821,961941,962555,962714,963372,963654,963
720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501,980555,980592
/lucene/java/branches/lucene_2_4/solr/src:748824
/lucene/java/branches/lucene_2_9/solr/src:817269-818600,825998,829134,829881,831036,896850,909334
/lucene/java/branches/lucene_2_9_back_compat_tests/solr/src:818601-821336
Propchange: lucene/dev/branches/branch_3x/solr/src/common/org/apache/solr/common/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jul 29 23:54:54 2010
@@ -1,2 +1,2 @@
-/lucene/dev/trunk/solr/src/common/org/apache/solr/common:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,960719,961821,9
61941,962555,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501
+/lucene/dev/trunk/solr/src/common/org/apache/solr/common:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,960719,961821,9
61941,962555,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501,980555,980592
/lucene/solr/trunk/src/common/org/apache/solr/common:922950-923910,923912-925091
Modified: lucene/dev/branches/branch_3x/solr/src/common/org/apache/solr/common/params/FacetParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/solr/src/common/org/apache/solr/common/params/FacetParams.java?rev=980610&r1=980609&r2=980610&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/solr/src/common/org/apache/solr/common/params/FacetParams.java (original)
+++ lucene/dev/branches/branch_3x/solr/src/common/org/apache/solr/common/params/FacetParams.java Thu Jul 29 23:54:54 2010
@@ -149,54 +149,140 @@ public interface FacetParams {
* String indicating what "other" ranges should be computed for a
* date facet range (multi-value).
* Can be overriden on a per field basis.
- * @see FacetDateOther
+ * @see FacetRangeOther
*/
public static final String FACET_DATE_OTHER = FACET_DATE + ".other";
- /**
- * An enumeration of the legal values for FACET_DATE_OTHER...
+ /**
+ * <p>
+ * Multivalued string indicating what rules should be applied to determine
+ * when the the ranges generated for date faceting should be inclusive or
+ * exclusive of their end points.
+ * </p>
+ * <p>
+ * The default value if none are specified is: [lower,upper,edge]
+ * </p>
+ * <p>
+ * Can be overriden on a per field basis.
+ * </p>
+ * @see FacetRangeInclude
+ */
+ public static final String FACET_DATE_INCLUDE = FACET_DATE + ".include";
+
+ /**
+ * Any numerical field whose terms the user wants to enumerate over
+ * Facet Contraint Counts for selected ranges.
+ */
+ public static final String FACET_RANGE = FACET + ".range";
+ /**
+ * Number indicating the starting point for a numerical range facet.
+ * Can be overriden on a per field basis.
+ */
+ public static final String FACET_RANGE_START = FACET_RANGE + ".start";
+ /**
+ * Number indicating the ending point for a numerical range facet.
+ * Can be overriden on a per field basis.
+ */
+ public static final String FACET_RANGE_END = FACET_RANGE + ".end";
+ /**
+ * Number indicating the interval of sub-ranges for a numerical
+ * facet range.
+ * Can be overriden on a per field basis.
+ */
+ public static final String FACET_RANGE_GAP = FACET_RANGE + ".gap";
+ /**
+ * Boolean indicating how counts should be computed if the range
+ * between 'start' and 'end' is not evenly divisible by 'gap'. If
+ * this value is true, then all counts of ranges involving the 'end'
+ * point will use the exact endpoint specified -- this includes the
+ * 'between' and 'after' counts as well as the last range computed
+ * using the 'gap'. If the value is false, then 'gap' is used to
+ * compute the effective endpoint closest to the 'end' param which
+ * results in the range between 'start' and 'end' being evenly
+ * divisible by 'gap'.
+ * The default is false.
+ * Can be overriden on a per field basis.
+ */
+ public static final String FACET_RANGE_HARD_END = FACET_RANGE + ".hardend";
+ /**
+ * String indicating what "other" ranges should be computed for a
+ * numerical range facet (multi-value).
+ * Can be overriden on a per field basis.
+ * @see FacetNumberOther
+ */
+ 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>
+ * Multivalued string indicating what rules should be applied to determine
+ * when the the ranges generated for numeric faceting should be inclusive or
+ * exclusive of their end points.
+ * </p>
+ * <p>
+ * The default value if none are specified is: [lower,upper,edge]
+ * </p>
+ * <p>
+ * Can be overriden on a per field basis.
+ * </p>
+ * @see FacetRangeInclude
+ */
+ public static final String FACET_RANGE_INCLUDE = FACET_RANGE + ".include";
+
+
+ /**
+ * An enumeration of the legal values for {@link #FACET_RANGE_OTHER} and {@link #FACET_DATE_OTHER} ...
* <ul>
- * <li>before = the count of matches before the start date</li>
- * <li>after = the count of matches after the end date</li>
+ * <li>before = the count of matches before the start</li>
+ * <li>after = the count of matches after the end</li>
* <li>between = the count of all matches between start and end</li>
* <li>all = all of the above (default value)</li>
* <li>none = no additional info requested</li>
* </ul>
+ * @see #FACET_RANGE_OTHER
* @see #FACET_DATE_OTHER
- * @see #FACET_DATE_INCLUDE
*/
- public enum FacetDateOther {
+ public enum FacetRangeOther {
BEFORE, AFTER, BETWEEN, ALL, NONE;
- public String toString() { return super.toString().toLowerCase(Locale.ENGLISH); }
- public static FacetDateOther get(String label) {
+ public String toString() { return super.toString().toLowerCase(); }
+ public static FacetRangeOther get(String label) {
try {
- return valueOf(label.toUpperCase(Locale.ENGLISH));
+ return valueOf(label.toUpperCase());
} catch (IllegalArgumentException e) {
throw new SolrException
(SolrException.ErrorCode.BAD_REQUEST,
- label+" is not a valid type of 'other' date facet information",e);
+ label+" is not a valid type of 'other' range facet information",e);
}
}
}
/**
- * <p>
- * Multivalued string indicating what rules should be applied to determine
- * when the the ranges generated for date faceting should be inclusive or
- * exclusive of their end points.
- * </p>
- * <p>
- * The default value if none are specified is: [lower,upper,edge]
- * </p>
- * <p>
- * Can be overriden on a per field basis.
- * </p>
- * @see FacetDateInclude
+ * @deprecated Use {@link FacetRangeOther}
*/
- public static final String FACET_DATE_INCLUDE = FACET_DATE + ".include";
-
+ @Deprecated
+ public enum FacetDateOther {
+ BEFORE, AFTER, BETWEEN, ALL, NONE;
+ public String toString() { return super.toString().toLowerCase(); }
+ public static FacetDateOther get(String label) {
+ try {
+ return valueOf(label.toUpperCase());
+ } catch (IllegalArgumentException e) {
+ throw new SolrException
+ (SolrException.ErrorCode.BAD_REQUEST,
+ label+" is not a valid type of 'other' range facet information",e);
+ }
+ }
+ }
+
/**
- * An enumeration of the legal values for FACET_DATE_INCLUDE...
+ * An enumeration of the legal values for {@link #FACET_DATE_INCLUDE} and {@link #FACET_RANGE_INCLUDE}
+ *
* <ul>
* <li>lower = all gap based ranges include their lower bound</li>
* <li>upper = all gap based ranges include their upper bound</li>
@@ -204,43 +290,45 @@ public interface FacetParams {
* for the first one, upper for the last one) even if the corrisponding
* upper/lower option is not specified
* </li>
- * <li>outer = the FacetDateOther.BEFORE and FacetDateOther.AFTER ranges
+ * <li>outer = the BEFORE and AFTER ranges
* should be inclusive of their bounds, even if the first or last ranges
* already include thouse boundaries.
* </li>
* <li>all = shorthand for lower, upper, edge, and outer</li>
* </ul>
* @see #FACET_DATE_INCLUDE
+ * @see #FACET_RANGE_INCLUDE
*/
- public enum FacetDateInclude {
+ public enum FacetRangeInclude {
ALL, LOWER, UPPER, EDGE, OUTER;
public String toString() { return super.toString().toLowerCase(); }
- public static FacetDateInclude get(String label) {
+ public static FacetRangeInclude get(String label) {
try {
return valueOf(label.toUpperCase());
} catch (IllegalArgumentException e) {
throw new SolrException
(SolrException.ErrorCode.BAD_REQUEST,
- label+" is not a valid type of for "+FACET_DATE_INCLUDE+" information",e);
+ label+" is not a valid type of for range 'include' information",e);
}
}
/**
- * Convinience method for parsing the param value according to the correct semantics.
+ * Convinience method for parsing the param value according to the
+ * correct semantics.
*/
- public static EnumSet<FacetDateInclude> parseParam(final String[] param) {
+ 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);
// build up set containing whatever is specified
- final EnumSet<FacetDateInclude> include = EnumSet.noneOf(FacetDateInclude.class);
+ final EnumSet<FacetRangeInclude> include = EnumSet.noneOf(FacetRangeInclude.class);
for (final String o : param) {
- include.add(FacetDateInclude.get(o));
+ include.add(FacetRangeInclude.get(o));
}
// if set contains all, then we're back to short circuting
- if (include.contains(FacetDateInclude.ALL))
- return EnumSet.allOf(FacetDateInclude.class);
+ if (include.contains(FacetRangeInclude.ALL))
+ return EnumSet.allOf(FacetRangeInclude.class);
// use whatever we've got.
return include;
Propchange: lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/analysis/SynonymFilter.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jul 29 23:54:54 2010
@@ -1,5 +1,5 @@
/lucene/dev/trunk/modules/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilter.java:950008
-/lucene/dev/trunk/solr/src/java/org/apache/solr/analysis/SynonymFilter.java:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960
374,960719,961821,961941,962555,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501
+/lucene/dev/trunk/solr/src/java/org/apache/solr/analysis/SynonymFilter.java:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960
374,960719,961821,961941,962555,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501,980555,980592
/lucene/java/branches/lucene_2_4/solr/src/java/org/apache/solr/analysis/SynonymFilter.java:748824
/lucene/java/branches/lucene_2_9/solr/src/java/org/apache/solr/analysis/SynonymFilter.java:817269-818600,825998,829134,829881,831036,896850,909334
/lucene/java/branches/lucene_2_9_back_compat_tests/solr/src/java/org/apache/solr/analysis/SynonymFilter.java:818601-821336
Propchange: lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/analysis/SynonymMap.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jul 29 23:54:54 2010
@@ -1,5 +1,5 @@
/lucene/dev/trunk/modules/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymMap.java:950008
-/lucene/dev/trunk/solr/src/java/org/apache/solr/analysis/SynonymMap.java:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374
,960719,961821,961941,962555,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501
+/lucene/dev/trunk/solr/src/java/org/apache/solr/analysis/SynonymMap.java:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374
,960719,961821,961941,962555,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501,980555,980592
/lucene/java/branches/lucene_2_4/solr/src/java/org/apache/solr/analysis/SynonymMap.java:748824
/lucene/java/branches/lucene_2_9/solr/src/java/org/apache/solr/analysis/SynonymMap.java:817269-818600,825998,829134,829881,831036,896850,909334
/lucene/java/branches/lucene_2_9_back_compat_tests/solr/src/java/org/apache/solr/analysis/SynonymMap.java:818601-821336
Modified: lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/handler/component/FacetComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/handler/component/FacetComponent.java?rev=980610&r1=980609&r2=980610&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/handler/component/FacetComponent.java (original)
+++ lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/handler/component/FacetComponent.java Thu Jul 29 23:54:54 2010
@@ -404,8 +404,9 @@ public class FacetComponent extends Sea
}
}
- // TODO: facet dates
+ // TODO: facet dates & numbers
facet_counts.add("facet_dates", new SimpleOrderedMap());
+ facet_counts.add("facet_ranges", new SimpleOrderedMap());
rb.rsp.add("facet_counts", facet_counts);
@@ -688,4 +689,4 @@ public class FacetComponent extends Sea
return "{term="+name+",termNum="+termNum+",count="+count+"}";
}
}
-}
\ No newline at end of file
+}
Modified: lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/request/SimpleFacets.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/request/SimpleFacets.java?rev=980610&r1=980609&r2=980610&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/request/SimpleFacets.java (original)
+++ lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/request/SimpleFacets.java Thu Jul 29 23:54:54 2010
@@ -28,13 +28,14 @@ import org.apache.solr.common.params.Fac
import org.apache.solr.common.params.RequiredSolrParams;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.params.CommonParams;
-import org.apache.solr.common.params.FacetParams.FacetDateOther;
-import org.apache.solr.common.params.FacetParams.FacetDateInclude;
+import org.apache.solr.common.params.FacetParams.FacetRangeOther;
+import org.apache.solr.common.params.FacetParams.FacetRangeInclude;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.common.util.StrUtils;
import org.apache.solr.core.SolrCore;
import org.apache.solr.schema.*;
+import org.apache.solr.schema.TrieField.TrieTypes;
import org.apache.solr.search.*;
import org.apache.solr.util.BoundedTreeSet;
import org.apache.solr.util.DateMathParser;
@@ -55,11 +56,14 @@ public class SimpleFacets {
protected DocSet docs;
/** Configuration params behavior should be driven by */
protected SolrParams params;
+ protected SolrParams required;
/** Searcher to use for all calculations */
protected SolrIndexSearcher searcher;
protected SolrQueryRequest req;
protected ResponseBuilder rb;
+ public final Date NOW = new Date();
+
// per-facet values
SolrParams localParams; // localParams on this particular facet command
String facetValue; // the field to or query to facet on (minus local params)
@@ -80,6 +84,7 @@ public class SimpleFacets {
this.searcher = req.getSearcher();
this.base = this.docs = docs;
this.params = params;
+ this.required = new RequiredSolrParams(params);
this.rb = rb;
}
@@ -151,6 +156,7 @@ public class SimpleFacets {
* @see #getFacetQueryCounts
* @see #getFacetFieldCounts
* @see #getFacetDateCounts
+ * @see #getFacetRangeCounts
* @see FacetParams#FACET
* @return a NamedList of Facet Count info or null
*/
@@ -166,7 +172,8 @@ public class SimpleFacets {
res.add("facet_queries", getFacetQueryCounts());
res.add("facet_fields", getFacetFieldCounts());
res.add("facet_dates", getFacetDateCounts());
-
+ res.add("facet_ranges", getFacetRangeCounts());
+
} catch (Exception e) {
SolrException.logOnce(SolrCore.log, "Exception during facet counts", e);
res.add("exception", SolrException.toStr(e));
@@ -546,12 +553,10 @@ public class SimpleFacets {
* @see FacetParams#FACET_DATE
*/
public NamedList getFacetDateCounts()
- throws IOException, ParseException {
+ throws IOException, ParseException {
- final SolrParams required = new RequiredSolrParams(params);
final NamedList resOuter = new SimpleOrderedMap();
final String[] fields = params.getParams(FacetParams.FACET_DATE);
- final Date NOW = new Date();
if (null == fields || 0 == fields.length) return resOuter;
@@ -601,9 +606,9 @@ public class SimpleFacets {
final DateMathParser dmp = new DateMathParser(ft.UTC, Locale.US);
dmp.setNow(NOW);
- int minCount = params.getFieldInt(f,FacetParams.FACET_MINCOUNT, 0);
+ final int minCount = params.getFieldInt(f,FacetParams.FACET_MINCOUNT, 0);
- final EnumSet<FacetDateInclude> include = FacetDateInclude.parseParam
+ final EnumSet<FacetRangeInclude> include = FacetRangeInclude.parseParam
(params.getFieldParams(f,FacetParams.FACET_DATE_INCLUDE));
try {
@@ -625,14 +630,14 @@ public class SimpleFacets {
(SolrException.ErrorCode.BAD_REQUEST,
"date facet infinite loop (is gap negative?)");
}
- boolean includeLower =
- (include.contains(FacetDateInclude.LOWER) ||
- (include.contains(FacetDateInclude.EDGE) && low.equals(start)));
- boolean includeUpper =
- (include.contains(FacetDateInclude.UPPER) ||
- (include.contains(FacetDateInclude.EDGE) && high.equals(end)));
+ final boolean includeLower =
+ (include.contains(FacetRangeInclude.LOWER) ||
+ (include.contains(FacetRangeInclude.EDGE) && low.equals(start)));
+ final boolean includeUpper =
+ (include.contains(FacetRangeInclude.UPPER) ||
+ (include.contains(FacetRangeInclude.EDGE) && high.equals(end)));
- int count = rangeCount(sf,low,high,includeLower,includeUpper);
+ final int count = rangeCount(sf,low,high,includeLower,includeUpper);
if (count >= minCount) {
resInner.add(label, count);
}
@@ -644,49 +649,52 @@ public class SimpleFacets {
"date facet 'gap' is not a valid Date Math string: " + gap, e);
}
- // explicitly return the gap and end so all the counts are meaningful
+ // explicitly return the gap and end so all the counts
+ // (including before/after/between) are meaningful - even if mincount
+ // has removed the neighboring ranges
resInner.add("gap", gap);
+ resInner.add("start", start);
resInner.add("end", end);
final String[] othersP =
params.getFieldParams(f,FacetParams.FACET_DATE_OTHER);
if (null != othersP && 0 < othersP.length ) {
- Set<FacetDateOther> others = EnumSet.noneOf(FacetDateOther.class);
+ final Set<FacetRangeOther> others = EnumSet.noneOf(FacetRangeOther.class);
for (final String o : othersP) {
- others.add(FacetDateOther.get(o));
+ others.add(FacetRangeOther.get(o));
}
// no matter what other values are listed, we don't do
// anything if "none" is specified.
- if (! others.contains(FacetDateOther.NONE) ) {
- boolean all = others.contains(FacetDateOther.ALL);
+ if (! others.contains(FacetRangeOther.NONE) ) {
+ boolean all = others.contains(FacetRangeOther.ALL);
- if (all || others.contains(FacetDateOther.BEFORE)) {
+ if (all || others.contains(FacetRangeOther.BEFORE)) {
// include upper bound if "outer" or if first gap doesn't already include it
- resInner.add(FacetDateOther.BEFORE.toString(),
+ resInner.add(FacetRangeOther.BEFORE.toString(),
rangeCount(sf,null,start,
false,
- (include.contains(FacetDateInclude.OUTER) ||
- (! (include.contains(FacetDateInclude.LOWER) ||
- include.contains(FacetDateInclude.EDGE))))));
+ (include.contains(FacetRangeInclude.OUTER) ||
+ (! (include.contains(FacetRangeInclude.LOWER) ||
+ include.contains(FacetRangeInclude.EDGE))))));
}
- if (all || others.contains(FacetDateOther.AFTER)) {
+ if (all || others.contains(FacetRangeOther.AFTER)) {
// include lower bound if "outer" or if last gap doesn't already include it
- resInner.add(FacetDateOther.AFTER.toString(),
+ resInner.add(FacetRangeOther.AFTER.toString(),
rangeCount(sf,end,null,
- (include.contains(FacetDateInclude.OUTER) ||
- (! (include.contains(FacetDateInclude.UPPER) ||
- include.contains(FacetDateInclude.EDGE)))),
+ (include.contains(FacetRangeInclude.OUTER) ||
+ (! (include.contains(FacetRangeInclude.UPPER) ||
+ include.contains(FacetRangeInclude.EDGE)))),
false));
}
- if (all || others.contains(FacetDateOther.BETWEEN)) {
- resInner.add(FacetDateOther.BETWEEN.toString(),
+ if (all || others.contains(FacetRangeOther.BETWEEN)) {
+ resInner.add(FacetRangeOther.BETWEEN.toString(),
rangeCount(sf,start,end,
- (include.contains(FacetDateInclude.LOWER) ||
- include.contains(FacetDateInclude.EDGE)),
- (include.contains(FacetDateInclude.UPPER) ||
- include.contains(FacetDateInclude.EDGE))));
+ (include.contains(FacetRangeInclude.LOWER) ||
+ include.contains(FacetRangeInclude.EDGE)),
+ (include.contains(FacetRangeInclude.UPPER) ||
+ include.contains(FacetRangeInclude.EDGE))));
}
}
}
@@ -695,6 +703,197 @@ public class SimpleFacets {
return resOuter;
}
+
+ /**
+ * Returns a list of value constraints and the associated facet
+ * counts for each facet numerical field, range, and interval
+ * specified in the SolrParams
+ *
+ * @see FacetParams#FACET_RANGE
+ */
+ public NamedList getFacetRangeCounts()
+ throws IOException, ParseException {
+
+ final NamedList resOuter = new SimpleOrderedMap();
+ final String[] fields = params.getParams(FacetParams.FACET_RANGE);
+
+ if (null == fields || 0 == fields.length) return resOuter;
+
+ final IndexSchema schema = searcher.getSchema();
+ for (String f : fields) {
+ parseParams(FacetParams.FACET_RANGE, f);
+ f = facetValue;
+
+ final SchemaField sf = schema.getField(f);
+ final FieldType ft = sf.getType();
+
+ RangeEndpointCalculator calc = null;
+
+ if (ft instanceof TrieField) {
+ final TrieField trie = (TrieField)ft;
+
+ switch (trie.getType()) {
+ case FLOAT:
+ calc = new FloatRangeEndpointCalculator(sf);
+ break;
+ case DOUBLE:
+ calc = new DoubleRangeEndpointCalculator(sf);
+ break;
+ case INTEGER:
+ calc = new IntegerRangeEndpointCalculator(sf);
+ break;
+ case LONG:
+ calc = new LongRangeEndpointCalculator(sf);
+ break;
+ default:
+ throw new SolrException
+ (SolrException.ErrorCode.BAD_REQUEST,
+ "Unable to range facet on tried field of unexpected type:" + f);
+ }
+ } else if (ft instanceof DateField) {
+ calc = new DateRangeEndpointCalculator(sf, NOW);
+ } else if (ft instanceof SortableIntField) {
+ calc = new IntegerRangeEndpointCalculator(sf);
+ } else if (ft instanceof SortableLongField) {
+ calc = new LongRangeEndpointCalculator(sf);
+ } else if (ft instanceof SortableFloatField) {
+ calc = new FloatRangeEndpointCalculator(sf);
+ } else if (ft instanceof SortableDoubleField) {
+ calc = new DoubleRangeEndpointCalculator(sf);
+ } else {
+ throw new SolrException
+ (SolrException.ErrorCode.BAD_REQUEST,
+ "Unable to range facet on field:" + sf);
+ }
+
+ resOuter.add(key, getFacetRangeCounts(sf, calc));
+ }
+
+ return resOuter;
+ }
+
+ private <T extends Comparable<T>> NamedList getFacetRangeCounts
+ (final SchemaField sf,
+ final RangeEndpointCalculator<T> calc) throws IOException {
+
+ final String f = sf.getName();
+ final NamedList res = new SimpleOrderedMap();
+ final NamedList counts = new SimpleOrderedMap();
+ res.add("counts", counts);
+
+ final T start = calc.getValue(required.getFieldParam(f,FacetParams.FACET_RANGE_START));
+ // not final, hardend may change this
+ T end = calc.getValue(required.getFieldParam(f,FacetParams.FACET_RANGE_END));
+ if (end.compareTo(start) < 0) {
+ throw new SolrException
+ (SolrException.ErrorCode.BAD_REQUEST,
+ "range facet 'end' comes before 'start': "+end+" < "+start);
+ }
+
+ final String gap = required.getFieldParam(f, FacetParams.FACET_RANGE_GAP);
+ // explicitly return the gap. compute this early so we are more
+ // likely to catch parse errors before attempting math
+ res.add("gap", calc.getGap(gap));
+
+ final int minCount = params.getFieldInt(f,FacetParams.FACET_MINCOUNT, 0);
+
+ final EnumSet<FacetRangeInclude> include = FacetRangeInclude.parseParam
+ (params.getFieldParams(f,FacetParams.FACET_RANGE_INCLUDE));
+
+ T low = start;
+
+ while (low.compareTo(end) < 0) {
+ T high = calc.addGap(low, gap);
+ if (end.compareTo(high) < 0) {
+ if (params.getFieldBool(f,FacetParams.FACET_RANGE_HARD_END,false)) {
+ high = end;
+ } else {
+ end = high;
+ }
+ }
+ if (high.compareTo(low) < 0) {
+ throw new SolrException
+ (SolrException.ErrorCode.BAD_REQUEST,
+ "range facet infinite loop (is gap negative? did the math overflow?)");
+ }
+
+ final boolean includeLower =
+ (include.contains(FacetRangeInclude.LOWER) ||
+ (include.contains(FacetRangeInclude.EDGE) &&
+ 0 == low.compareTo(start)));
+ final boolean includeUpper =
+ (include.contains(FacetRangeInclude.UPPER) ||
+ (include.contains(FacetRangeInclude.EDGE) &&
+ 0 == high.compareTo(end)));
+
+ final String lowS = calc.formatValue(low);
+ final String highS = calc.formatValue(high);
+
+ final int count = rangeCount(sf, lowS, highS,
+ includeLower,includeUpper);
+ if (count >= minCount) {
+ counts.add(lowS, count);
+ }
+
+ low = high;
+ }
+
+ // explicitly return the start and end so all the counts
+ // (including before/after/between) are meaningful - even if mincount
+ // has removed the neighboring ranges
+ res.add("start", start);
+ res.add("end", end);
+
+ final String[] othersP =
+ params.getFieldParams(f,FacetParams.FACET_RANGE_OTHER);
+ if (null != othersP && 0 < othersP.length ) {
+ Set<FacetRangeOther> others = EnumSet.noneOf(FacetRangeOther.class);
+
+ for (final String o : othersP) {
+ others.add(FacetRangeOther.get(o));
+ }
+
+ // no matter what other values are listed, we don't do
+ // anything if "none" is specified.
+ if (! others.contains(FacetRangeOther.NONE) ) {
+
+ boolean all = others.contains(FacetRangeOther.ALL);
+ final String startS = calc.formatValue(start);
+ final String endS = calc.formatValue(end);
+
+ if (all || others.contains(FacetRangeOther.BEFORE)) {
+ // include upper bound if "outer" or if first gap doesn't already include it
+ res.add(FacetRangeOther.BEFORE.toString(),
+ rangeCount(sf,null,startS,
+ false,
+ (include.contains(FacetRangeInclude.OUTER) ||
+ (! (include.contains(FacetRangeInclude.LOWER) ||
+ include.contains(FacetRangeInclude.EDGE))))));
+
+ }
+ if (all || others.contains(FacetRangeOther.AFTER)) {
+ // include lower bound if "outer" or if last gap doesn't already include it
+ res.add(FacetRangeOther.AFTER.toString(),
+ rangeCount(sf,endS,null,
+ (include.contains(FacetRangeInclude.OUTER) ||
+ (! (include.contains(FacetRangeInclude.UPPER) ||
+ include.contains(FacetRangeInclude.EDGE)))),
+ false));
+ }
+ if (all || others.contains(FacetRangeOther.BETWEEN)) {
+ res.add(FacetRangeOther.BETWEEN.toString(),
+ rangeCount(sf,startS,endS,
+ (include.contains(FacetRangeInclude.LOWER) ||
+ include.contains(FacetRangeInclude.EDGE)),
+ (include.contains(FacetRangeInclude.UPPER) ||
+ include.contains(FacetRangeInclude.EDGE))));
+
+ }
+ }
+ }
+ return res;
+ }
+
/**
* Macro for getting the numDocs of range over docs
* @see SolrIndexSearcher#numDocs
@@ -737,5 +936,173 @@ public class SimpleFacets {
return (0 != vc ? vc : key.compareTo(o.key));
}
}
+
+
+ /**
+ * Perhaps someday instead of having a giant "instanceof" case
+ * statement to pick an impl, we can add a "RangeFacetable" marker
+ * interface to FieldTypes and they can return instances of these
+ * directly from some method -- but until then, keep this locked down
+ * and private.
+ */
+ private static abstract class RangeEndpointCalculator<T extends Comparable<T>> {
+ protected final SchemaField field;
+ public RangeEndpointCalculator(final SchemaField field) {
+ this.field = field;
+ }
+
+ /**
+ * Formats a Range endpoint for use as a range label name in the response.
+ * Default Impl just uses toString()
+ */
+ public String formatValue(final T val) {
+ return val.toString();
+ }
+ /**
+ * Parses a String param into an Range endpoint value throwing
+ * a useful exception if not possible
+ */
+ public final T getValue(final String rawval) {
+ try {
+ return parseVal(rawval);
+ } catch (Exception e) {
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
+ "Can't parse value "+rawval+" for field: " +
+ field.getName(), e);
+ }
+ }
+ /**
+ * Parses a String param into an Range endpoint.
+ * Can throw a low level format exception as needed.
+ */
+ protected abstract T parseVal(final String rawval)
+ throws java.text.ParseException;
+
+ /**
+ * Parses a String param into a value that represents the gap and
+ * can be included in the response, throwing
+ * a useful exception if not possible.
+ *
+ * Note: uses Object as the return type instead of T for things like
+ * Date where gap is just a DateMathParser string
+ */
+ public final Object getGap(final String gap) {
+ try {
+ return parseGap(gap);
+ } catch (Exception e) {
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
+ "Can't parse gap "+gap+" for field: " +
+ field.getName(), e);
+ }
+ }
+
+ /**
+ * Parses a String param into a value that represents the gap and
+ * can be included in the response.
+ * Can throw a low level format exception as needed.
+ *
+ * Default Impl calls parseVal
+ */
+ protected Object parseGap(final String rawval)
+ throws java.text.ParseException {
+ return parseVal(rawval);
+ }
+
+ /**
+ * Adds the String gap param to a low Range endpoint value to determine
+ * the corrisponding high Range endpoint value, throwing
+ * a useful exception if not possible.
+ */
+ public final T addGap(T value, String gap) {
+ try {
+ return parseAndAddGap(value, gap);
+ } catch (Exception e) {
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
+ "Can't add gap "+gap+" to value " + value +
+ " for field: " + field.getName(), e);
+ }
+ }
+ /**
+ * Adds the String gap param to a low Range endpoint value to determine
+ * the corrisponding high Range endpoint value.
+ * Can throw a low level format exception as needed.
+ */
+ protected abstract T parseAndAddGap(T value, String gap)
+ throws java.text.ParseException;
+
+ }
+
+ private static class FloatRangeEndpointCalculator
+ extends RangeEndpointCalculator<Float> {
+
+ public FloatRangeEndpointCalculator(final SchemaField f) { super(f); }
+ protected Float parseVal(String rawval) {
+ return Float.valueOf(rawval);
+ }
+ public Float parseAndAddGap(Float value, String gap) {
+ return new Float(value.floatValue() + Float.valueOf(gap).floatValue());
+ }
+ }
+ private static class DoubleRangeEndpointCalculator
+ extends RangeEndpointCalculator<Double> {
+
+ public DoubleRangeEndpointCalculator(final SchemaField f) { super(f); }
+ protected Double parseVal(String rawval) {
+ return Double.valueOf(rawval);
+ }
+ public Double parseAndAddGap(Double value, String gap) {
+ return new Double(value.floatValue() + Double.valueOf(gap).floatValue());
+ }
+ }
+ private static class IntegerRangeEndpointCalculator
+ extends RangeEndpointCalculator<Integer> {
+
+ public IntegerRangeEndpointCalculator(final SchemaField f) { super(f); }
+ protected Integer parseVal(String rawval) {
+ return Integer.valueOf(rawval);
+ }
+ public Integer parseAndAddGap(Integer value, String gap) {
+ return new Integer(value.intValue() + Integer.valueOf(gap).intValue());
+ }
+ }
+ private static class LongRangeEndpointCalculator
+ extends RangeEndpointCalculator<Long> {
+
+ public LongRangeEndpointCalculator(final SchemaField f) { super(f); }
+ protected Long parseVal(String rawval) {
+ return Long.valueOf(rawval);
+ }
+ public Long parseAndAddGap(Long value, String gap) {
+ return new Long(value.intValue() + Long.valueOf(gap).intValue());
+ }
+ }
+ private static class DateRangeEndpointCalculator
+ extends RangeEndpointCalculator<Date> {
+ private final Date now;
+ public DateRangeEndpointCalculator(final SchemaField f,
+ final Date now) {
+ super(f);
+ this.now = now;
+ if (! (field.getType() instanceof DateField) ) {
+ throw new IllegalArgumentException
+ ("SchemaField must use filed type extending DateField");
+ }
+ }
+ public String formatValue(Date val) {
+ return ((DateField)field.getType()).toExternal(val);
+ }
+ protected Date parseVal(String rawval) {
+ return ((DateField)field.getType()).parseMath(now, rawval);
+ }
+ protected Object parseGap(final String rawval) {
+ return rawval;
+ }
+ public Date parseAndAddGap(Date value, String gap) throws java.text.ParseException {
+ final DateMathParser dmp = new DateMathParser(DateField.UTC, Locale.US);
+ dmp.setNow(value);
+ return dmp.parseMath(gap);
+ }
+ }
+
}
Propchange: lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/response/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jul 29 23:54:54 2010
@@ -1,4 +1,4 @@
-/lucene/dev/trunk/solr/src/java/org/apache/solr/response:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950830,950835,951126,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,960719,961821,9
61941,962555,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501
+/lucene/dev/trunk/solr/src/java/org/apache/solr/response:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950830,950835,951126,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,960719,961821,9
61941,962555,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501,980555,980592
/lucene/java/branches/lucene_2_4/solr/src/java/org/apache/solr/response:748824
/lucene/java/branches/lucene_2_9/solr/src/java/org/apache/solr/response:817269-818600,825998,829134,829881,831036,896850,909334
/lucene/java/branches/lucene_2_9_back_compat_tests/solr/src/java/org/apache/solr/response:818601-821336
Propchange: lucene/dev/branches/branch_3x/solr/src/maven/solr-core-pom.xml.template
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jul 29 23:54:54 2010
@@ -1,2 +1,2 @@
-/lucene/dev/trunk/solr/src/maven/solr-core-pom.xml.template:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,960719,96182
1,961941,962555,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501
+/lucene/dev/trunk/solr/src/maven/solr-core-pom.xml.template:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,960719,96182
1,961941,962555,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501,980555,980592
/lucene/solr/trunk/src/maven/solr-core-pom.xml.template:922950-923910,923912-925091
Propchange: lucene/dev/branches/branch_3x/solr/src/maven/solr-solrj-pom.xml.template
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jul 29 23:54:54 2010
@@ -1,2 +1,2 @@
-/lucene/dev/trunk/solr/src/maven/solr-solrj-pom.xml.template:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,960719,9618
21,961941,962555,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501
+/lucene/dev/trunk/solr/src/maven/solr-solrj-pom.xml.template:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,960719,9618
21,961941,962555,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501,980555,980592
/lucene/solr/trunk/src/maven/solr-solrj-pom.xml.template:922950-923910,923912-925091
Propchange: lucene/dev/branches/branch_3x/solr/src/solrj/org/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jul 29 23:54:54 2010
@@ -1,2 +1,2 @@
-/lucene/dev/trunk/solr/src/solrj/org:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,960719,961821,961941,962555,962714,
963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501
+/lucene/dev/trunk/solr/src/solrj/org:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,960719,961821,961941,962555,962714,
963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501,980555,980592
/lucene/solr/trunk/src/solrj/org:922950-923910,923912-925091
Modified: lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/ConvertedLegacyTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/ConvertedLegacyTest.java?rev=980610&r1=980609&r2=980610&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/ConvertedLegacyTest.java (original)
+++ lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/ConvertedLegacyTest.java Thu Jul 29 23:54:54 2010
@@ -1150,7 +1150,7 @@ public class ConvertedLegacyTest extends
,"//str[.='Yonik'] "
,"//float[.='1.4142135'] "
,"//float[@name='score'] "
- ,"*[count(//doc/*)=13]"
+ ,"*[count(//doc/*)>=13]"
);
args = new HashMap<String,String>();
args.put("version","2.0");
@@ -1161,7 +1161,7 @@ public class ConvertedLegacyTest extends
,"//str[.='Yonik'] "
,"//float[.='1.4142135'] "
,"//float[@name='score'] "
- ,"*[count(//doc/*)=13]"
+ ,"*[count(//doc/*)>=13]"
);
args = new HashMap<String,String>();
args.put("version","2.0");
Propchange: lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/analysis/TestRemoveDuplicatesTokenFilter.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jul 29 23:54:54 2010
@@ -1,5 +1,5 @@
/lucene/dev/trunk/modules/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestRemoveDuplicatesTokenFilter.java:950008
-/lucene/dev/trunk/solr/src/test/org/apache/solr/analysis/TestRemoveDuplicatesTokenFilter.java:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634
,957707,960367,960374,960719,961821,961941,962555,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501
+/lucene/dev/trunk/solr/src/test/org/apache/solr/analysis/TestRemoveDuplicatesTokenFilter.java:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634
,957707,960367,960374,960719,961821,961941,962555,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501,980555,980592
/lucene/java/branches/lucene_2_4/solr/src/test/org/apache/solr/analysis/TestRemoveDuplicatesTokenFilter.java:748824
/lucene/java/branches/lucene_2_9/solr/src/test/org/apache/solr/analysis/TestRemoveDuplicatesTokenFilter.java:817269-818600,825998,829134,829881,831036,896850,909334
/lucene/java/branches/lucene_2_9_back_compat_tests/solr/src/test/org/apache/solr/analysis/TestRemoveDuplicatesTokenFilter.java:818601-821336
Propchange: lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/analysis/TestTrimFilter.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jul 29 23:54:54 2010
@@ -1,5 +1,5 @@
/lucene/dev/trunk/modules/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestTrimFilter.java:950008
-/lucene/dev/trunk/solr/src/test/org/apache/solr/analysis/TestTrimFilter.java:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,96
0374,960719,961821,961941,962555,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501
+/lucene/dev/trunk/solr/src/test/org/apache/solr/analysis/TestTrimFilter.java:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,96
0374,960719,961821,961941,962555,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501,980555,980592
/lucene/java/branches/lucene_2_4/solr/src/test/org/apache/solr/analysis/TestTrimFilter.java:748824
/lucene/java/branches/lucene_2_9/solr/src/test/org/apache/solr/analysis/TestTrimFilter.java:817269-818600,825998,829134,829881,831036,896850,909334
/lucene/java/branches/lucene_2_9_back_compat_tests/solr/src/test/org/apache/solr/analysis/TestTrimFilter.java:818601-821336
Propchange: lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/client/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jul 29 23:54:54 2010
@@ -1,2 +1,2 @@
-/lucene/dev/trunk/solr/src/test/org/apache/solr/client:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,960719,961821,961
941,962555,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501
+/lucene/dev/trunk/solr/src/test/org/apache/solr/client:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940556,940666,940699,940730,940878-940892,940994,941270,941363,942166,942235,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950125,950207,950458,950613,950723,950835,951126,951355,951397,951521,953628,953886,954336,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960374,960719,961821,961
941,962555,962714,963372,963654,963720,963781,963873,963888,963906,963909,963920,964019,964054,964267,964312,964430,964459,964720,964753,964832,964856,965103,965222,965230,965327,965330,965585,965938,966354,979049,979807,980369,980428,980436,980501,980555,980592
/lucene/solr/trunk/src/test/org/apache/solr/client:922950-923910,923912-925091