You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2013/04/30 13:20:13 UTC

svn commit: r1477562 - in /lucene/dev/trunk/lucene: ./ demo/ demo/src/java/org/apache/lucene/demo/facet/ demo/src/test/org/apache/lucene/demo/facet/ facet/ facet/src/java/org/apache/lucene/facet/range/ facet/src/java/org/apache/lucene/facet/search/ fac...

Author: mikemccand
Date: Tue Apr 30 11:20:13 2013
New Revision: 1477562

URL: http://svn.apache.org/r1477562
Log:
LUCENE-4965: add dynamic numeric range faceting

Added:
    lucene/dev/trunk/lucene/demo/src/java/org/apache/lucene/demo/facet/RangeFacetsExample.java
      - copied, changed from r1477560, lucene/dev/branches/branch_4x/lucene/demo/src/java/org/apache/lucene/demo/facet/RangeFacetsExample.java
    lucene/dev/trunk/lucene/demo/src/test/org/apache/lucene/demo/facet/TestRangeFacetsExample.java
      - copied unchanged from r1477560, lucene/dev/branches/branch_4x/lucene/demo/src/test/org/apache/lucene/demo/facet/TestRangeFacetsExample.java
    lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/range/
      - copied from r1477560, lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/range/
    lucene/dev/trunk/lucene/facet/src/test/org/apache/lucene/facet/range/
      - copied from r1477560, lucene/dev/branches/branch_4x/lucene/facet/src/test/org/apache/lucene/facet/range/
Modified:
    lucene/dev/trunk/lucene/CHANGES.txt   (contents, props changed)
    lucene/dev/trunk/lucene/demo/   (props changed)
    lucene/dev/trunk/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleFacetsExample.java
    lucene/dev/trunk/lucene/facet/   (props changed)
    lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/search/FacetsAccumulator.java
    lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/search/FacetsCollector.java
    lucene/dev/trunk/lucene/facet/src/test/org/apache/lucene/facet/range/TestRangeAccumulator.java

Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=1477562&r1=1477561&r2=1477562&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Tue Apr 30 11:20:13 2013
@@ -101,6 +101,9 @@ New Features
 
 * LUCENE-4966: Add CachingWrapperFilter.sizeInBytes() (Mike McCandless)
 
+* LUCENE-4965: Add dynamic (no taxonomy index used) numeric range
+  faceting to Lucene's facet module (Mike McCandless, Shai Erera)
+
 ======================= Lucene 4.3.0 =======================
 
 Changes in backwards compatibility policy

Copied: lucene/dev/trunk/lucene/demo/src/java/org/apache/lucene/demo/facet/RangeFacetsExample.java (from r1477560, lucene/dev/branches/branch_4x/lucene/demo/src/java/org/apache/lucene/demo/facet/RangeFacetsExample.java)
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/demo/src/java/org/apache/lucene/demo/facet/RangeFacetsExample.java?p2=lucene/dev/trunk/lucene/demo/src/java/org/apache/lucene/demo/facet/RangeFacetsExample.java&p1=lucene/dev/branches/branch_4x/lucene/demo/src/java/org/apache/lucene/demo/facet/RangeFacetsExample.java&r1=1477560&r2=1477562&rev=1477562&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/demo/src/java/org/apache/lucene/demo/facet/RangeFacetsExample.java (original)
+++ lucene/dev/trunk/lucene/demo/src/java/org/apache/lucene/demo/facet/RangeFacetsExample.java Tue Apr 30 11:20:13 2013
@@ -24,8 +24,8 @@ import java.util.List;
 import org.apache.lucene.analysis.core.WhitespaceAnalyzer;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
-import org.apache.lucene.document.LongDocValuesField;
 import org.apache.lucene.document.LongField;
+import org.apache.lucene.document.NumericDocValuesField;
 import org.apache.lucene.facet.params.FacetIndexingParams;
 import org.apache.lucene.facet.params.FacetSearchParams;
 import org.apache.lucene.facet.range.LongRange;
@@ -66,7 +66,7 @@ public class RangeFacetsExample implemen
       Document doc = new Document();
       long then = nowSec - i * 1000;
       // Add as doc values field, so we can compute range facets:
-      doc.add(new LongDocValuesField("timestamp", then));
+      doc.add(new NumericDocValuesField("timestamp", then));
       // Add as numeric field so we can drill-down:
       doc.add(new LongField("timestamp", then, Field.Store.NO));
       indexWriter.addDocument(doc);

Modified: lucene/dev/trunk/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleFacetsExample.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleFacetsExample.java?rev=1477562&r1=1477561&r2=1477562&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleFacetsExample.java (original)
+++ lucene/dev/trunk/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleFacetsExample.java Tue Apr 30 11:20:13 2013
@@ -119,7 +119,10 @@ public class SimpleFacetsExample {
 
     // Now user drills down on Publish Date/2010:
     FacetSearchParams fsp = new FacetSearchParams(new CountFacetRequest(new CategoryPath("Author"), 10));
-    DrillDownQuery q = new DrillDownQuery(fsp.indexingParams, new MatchAllDocsQuery());
+
+    // Passing no baseQuery means we drill down on all
+    // documents ("browse only"):
+    DrillDownQuery q = new DrillDownQuery(fsp.indexingParams);
     q.add(new CategoryPath("Publish Date/2010", '/'));
     FacetsCollector fc = FacetsCollector.create(fsp, searcher.getIndexReader(), taxoReader);
     searcher.search(q, fc);

Modified: lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/search/FacetsAccumulator.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/search/FacetsAccumulator.java?rev=1477562&r1=1477561&r2=1477562&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/search/FacetsAccumulator.java (original)
+++ lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/search/FacetsAccumulator.java Tue Apr 30 11:20:13 2013
@@ -58,7 +58,7 @@ public class FacetsAccumulator {
    * constructor.
    */
   public FacetsAccumulator(FacetSearchParams searchParams, IndexReader indexReader, TaxonomyReader taxonomyReader) {
-    this(searchParams, indexReader, taxonomyReader, null);
+    this(searchParams, indexReader, taxonomyReader, new FacetArrays(taxonomyReader.getSize()));
   }
 
   /**
@@ -97,9 +97,6 @@ public class FacetsAccumulator {
    */
   public FacetsAccumulator(FacetSearchParams searchParams, IndexReader indexReader, TaxonomyReader taxonomyReader, 
       FacetArrays facetArrays) {
-    if (facetArrays == null) {
-      facetArrays = new FacetArrays(taxonomyReader.getSize());
-    }
     this.facetArrays = facetArrays;
     this.indexReader = indexReader;
     this.taxonomyReader = taxonomyReader;
@@ -199,4 +196,7 @@ public class FacetsAccumulator {
     return res;
   }
 
+  protected boolean requiresDocScores() {
+    return getAggregator().requiresDocScores();
+  }
 }

Modified: lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/search/FacetsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/search/FacetsCollector.java?rev=1477562&r1=1477561&r2=1477562&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/search/FacetsCollector.java (original)
+++ lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/search/FacetsCollector.java Tue Apr 30 11:20:13 2013
@@ -175,7 +175,7 @@ public abstract class FacetsCollector ex
    * given {@link FacetsAccumulator}.
    */
   public static FacetsCollector create(FacetsAccumulator accumulator) {
-    if (accumulator.getAggregator().requiresDocScores()) {
+    if (accumulator.requiresDocScores()) {
       return new DocsAndScoresCollector(accumulator);
     } else {
       return new DocsOnlyCollector(accumulator);

Modified: lucene/dev/trunk/lucene/facet/src/test/org/apache/lucene/facet/range/TestRangeAccumulator.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/facet/src/test/org/apache/lucene/facet/range/TestRangeAccumulator.java?rev=1477562&r1=1477560&r2=1477562&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/facet/src/test/org/apache/lucene/facet/range/TestRangeAccumulator.java (original)
+++ lucene/dev/trunk/lucene/facet/src/test/org/apache/lucene/facet/range/TestRangeAccumulator.java Tue Apr 30 11:20:13 2013
@@ -25,7 +25,6 @@ import org.apache.lucene.document.Double
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FloatDocValuesField;
 import org.apache.lucene.document.FloatField;
-import org.apache.lucene.document.LongDocValuesField;
 import org.apache.lucene.document.LongField;
 import org.apache.lucene.document.NumericDocValuesField;
 import org.apache.lucene.facet.FacetTestCase;
@@ -164,7 +163,7 @@ public class TestRangeAccumulator extend
       Document doc = new Document();
       long v = random().nextLong();
       values[i] = v;
-      doc.add(new LongDocValuesField("field", v));
+      doc.add(new NumericDocValuesField("field", v));
       doc.add(new LongField("field", v, Field.Store.NO));
       w.addDocument(doc);
     }