You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2014/03/02 12:46:05 UTC

svn commit: r1573289 - in /lucene/dev/branches/branch_4x: ./ lucene/ lucene/demo/ lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleFacetsExample.java lucene/demo/src/test/org/apache/lucene/demo/facet/TestSimpleFacetsExample.java

Author: shaie
Date: Sun Mar  2 11:46:05 2014
New Revision: 1573289

URL: http://svn.apache.org/r1573289
Log:
LUCENE-5474: Add example for retrieving facet counts without retrieving documents

Modified:
    lucene/dev/branches/branch_4x/   (props changed)
    lucene/dev/branches/branch_4x/lucene/   (props changed)
    lucene/dev/branches/branch_4x/lucene/demo/   (props changed)
    lucene/dev/branches/branch_4x/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleFacetsExample.java
    lucene/dev/branches/branch_4x/lucene/demo/src/test/org/apache/lucene/demo/facet/TestSimpleFacetsExample.java

Modified: lucene/dev/branches/branch_4x/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleFacetsExample.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleFacetsExample.java?rev=1573289&r1=1573288&r2=1573289&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleFacetsExample.java (original)
+++ lucene/dev/branches/branch_4x/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleFacetsExample.java Sun Mar  2 11:46:05 2014
@@ -91,7 +91,7 @@ public class SimpleFacetsExample {
   }
 
   /** User runs a query and counts facets. */
-  private List<FacetResult> search() throws IOException {
+  private List<FacetResult> facetsWithSearch() throws IOException {
     DirectoryReader indexReader = DirectoryReader.open(indexDir);
     IndexSearcher searcher = new IndexSearcher(indexReader);
     TaxonomyReader taxoReader = new DirectoryTaxonomyReader(taxoDir);
@@ -117,6 +117,34 @@ public class SimpleFacetsExample {
     return results;
   }
   
+  /** User runs a query and counts facets only without collecting the matching documents.*/
+  private List<FacetResult> facetsOnly() throws IOException {
+    DirectoryReader indexReader = DirectoryReader.open(indexDir);
+    IndexSearcher searcher = new IndexSearcher(indexReader);
+    TaxonomyReader taxoReader = new DirectoryTaxonomyReader(taxoDir);
+
+    FacetsCollector fc = new FacetsCollector();
+
+    // MatchAllDocsQuery is for "browsing" (counts facets
+    // for all non-deleted docs in the index); normally
+    // you'd use a "normal" query:
+    searcher.search(new MatchAllDocsQuery(), null /*Filter */, fc);
+
+    // Retrieve results
+    List<FacetResult> results = new ArrayList<FacetResult>();
+
+    // Count both "Publish Date" and "Author" dimensions
+    Facets facets = new FastTaxonomyFacetCounts(taxoReader, config, fc);
+   
+    results.add(facets.getTopChildren(10, "Author"));
+    results.add(facets.getTopChildren(10, "Publish Date"));
+    
+    indexReader.close();
+    taxoReader.close();
+    
+    return results;
+  }
+  
   /** User drills down on 'Publish Date/2010'. */
   private FacetResult drillDown() throws IOException {
     DirectoryReader indexReader = DirectoryReader.open(indexDir);
@@ -143,9 +171,15 @@ public class SimpleFacetsExample {
   }
 
   /** Runs the search example. */
+  public List<FacetResult> runFacetOnly() throws IOException {
+    index();
+    return facetsOnly();
+  }
+  
+  /** Runs the search example. */
   public List<FacetResult> runSearch() throws IOException {
     index();
-    return search();
+    return facetsWithSearch();
   }
   
   /** Runs the drill-down example. */
@@ -158,10 +192,18 @@ public class SimpleFacetsExample {
   public static void main(String[] args) throws Exception {
     System.out.println("Facet counting example:");
     System.out.println("-----------------------");
+    SimpleFacetsExample example1 = new SimpleFacetsExample();
+    List<FacetResult> results1 = example1.runFacetOnly();
+    System.out.println("Author: " + results1.get(0));
+    System.out.println("Publish Date: " + results1.get(1));
+    
+    System.out.println("Facet counting example (combined facets and search):");
+    System.out.println("-----------------------");
     SimpleFacetsExample example = new SimpleFacetsExample();
     List<FacetResult> results = example.runSearch();
     System.out.println("Author: " + results.get(0));
     System.out.println("Publish Date: " + results.get(1));
+    
 
     System.out.println("\n");
     System.out.println("Facet drill-down example (Publish Date/2010):");
@@ -169,4 +211,4 @@ public class SimpleFacetsExample {
     System.out.println("Author: " + example.runDrillDown());
   }
   
-}
+}
\ No newline at end of file

Modified: lucene/dev/branches/branch_4x/lucene/demo/src/test/org/apache/lucene/demo/facet/TestSimpleFacetsExample.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/demo/src/test/org/apache/lucene/demo/facet/TestSimpleFacetsExample.java?rev=1573289&r1=1573288&r2=1573289&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/demo/src/test/org/apache/lucene/demo/facet/TestSimpleFacetsExample.java (original)
+++ lucene/dev/branches/branch_4x/lucene/demo/src/test/org/apache/lucene/demo/facet/TestSimpleFacetsExample.java Sun Mar  2 11:46:05 2014
@@ -29,6 +29,15 @@ import org.junit.Test;
 public class TestSimpleFacetsExample extends LuceneTestCase {
 
   @Test
+  public void testFacetOnly() throws Exception {
+    List<FacetResult> results = new SimpleFacetsExample().runFacetOnly();
+    assertEquals(2, results.size());
+    assertEquals("dim=Author path=[] value=5 childCount=4\n  Lisa (2)\n  Bob (1)\n  Susan (1)\n  Frank (1)\n", results.get(0).toString());
+    assertEquals("dim=Publish Date path=[] value=5 childCount=3\n  2010 (2)\n  2012 (2)\n  1999 (1)\n", results.get(1).toString());
+  }
+  
+  
+  @Test
   public void testSimple() throws Exception {
     List<FacetResult> results = new SimpleFacetsExample().runSearch();
     assertEquals(2, results.size());