You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ry...@apache.org on 2010/10/19 19:03:43 UTC

svn commit: r1024323 - in /lucene/dev/trunk/solr/src: java/org/apache/solr/handler/component/PivotFacetComponent.java test/org/apache/solr/client/solrj/SolrExampleTests.java

Author: ryan
Date: Tue Oct 19 17:03:42 2010
New Revision: 1024323

URL: http://svn.apache.org/viewvc?rev=1024323&view=rev
Log:
SOLR-792 -- write the value as an Object, not always a string

Modified:
    lucene/dev/trunk/solr/src/java/org/apache/solr/handler/component/PivotFacetComponent.java
    lucene/dev/trunk/solr/src/test/org/apache/solr/client/solrj/SolrExampleTests.java

Modified: lucene/dev/trunk/solr/src/java/org/apache/solr/handler/component/PivotFacetComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/java/org/apache/solr/handler/component/PivotFacetComponent.java?rev=1024323&r1=1024322&r2=1024323&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/java/org/apache/solr/handler/component/PivotFacetComponent.java (original)
+++ lucene/dev/trunk/solr/src/java/org/apache/solr/handler/component/PivotFacetComponent.java Tue Oct 19 17:03:42 2010
@@ -30,6 +30,10 @@ import org.apache.solr.request.SolrQuery
 import org.apache.solr.schema.FieldType;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TermQuery;
+import org.apache.lucene.document.Field;
+import org.apache.lucene.document.Fieldable;
+import org.apache.lucene.document.Field.Index;
+import org.apache.lucene.document.Field.Store;
 import org.apache.lucene.index.Term;
 
 import java.io.IOException;
@@ -116,30 +120,30 @@ public class PivotFacetComponent extends
   {
     SolrIndexSearcher searcher = rb.req.getSearcher();
     // TODO: optimize to avoid converting to an external string and then having to convert back to internal below
-    FieldType ftype = null;
+    FieldType ftype = searcher.getSchema().getField(field).getType();
+    
+    // Required to translate back to an object
+    Field f = new Field( field, "X", Store.YES, Index.ANALYZED );
 
- //   SimpleFacets sf = getFacetImplementation(rb.req, docs, rb.req.getParams());
     String nextField = fnames.poll();
 
     List<NamedList<Object>> values = new ArrayList<NamedList<Object>>( superFacets.size() );
     for (Map.Entry<String, Integer> kv : superFacets) {
       // Only sub-facet if parent facet has positive count - still may not be any values for the sub-field though
-      if (kv.getValue() > minMatch ) {  
+      if (kv.getValue() > minMatch ) {
+        String internal = ftype.toInternal( kv.getKey() );
+        f.setValue( internal );
+        
         SimpleOrderedMap<Object> pivot = new SimpleOrderedMap<Object>();
         pivot.add( "field", field );
-        pivot.add( "value", kv.getKey() );
+        pivot.add( "value", ftype.toObject( f ) );
         pivot.add( "count", kv.getValue() );
         
         if( subField == null ) {
           values.add( pivot );
         }
         else {
-          String s = kv.getKey();
-          if( ftype == null ) {
-            ftype = searcher.getSchema().getField(field).getType();
-          }
-          
-          Query query = new TermQuery(new Term(field, ftype.toInternal(s)));
+          Query query = new TermQuery(new Term(field, internal));
           DocSet subset = searcher.getDocSet(query, docs);
           SimpleFacets sf = getFacetImplementation(rb.req, subset, rb.req.getParams());
           

Modified: lucene/dev/trunk/solr/src/test/org/apache/solr/client/solrj/SolrExampleTests.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/test/org/apache/solr/client/solrj/SolrExampleTests.java?rev=1024323&r1=1024322&r2=1024323&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/test/org/apache/solr/client/solrj/SolrExampleTests.java (original)
+++ lucene/dev/trunk/solr/src/test/org/apache/solr/client/solrj/SolrExampleTests.java Tue Oct 19 17:03:42 2010
@@ -650,9 +650,9 @@ abstract public class SolrExampleTests e
     counts = p.getPivot();
   //  p.write(System.out, 5 );
     assertEquals( 1, counts.size() );
-    assertEquals( "inStock", counts.get(0).getField() );
-    assertEquals( "true",    counts.get(0).getValue() );
-    assertEquals(  2,       counts.get(0).getCount() );
+    assertEquals( "inStock",    counts.get(0).getField() );
+    assertEquals( Boolean.TRUE, counts.get(0).getValue() );
+    assertEquals(  2,           counts.get(0).getCount() );
   }
   
   public static SolrInputDocument makeTestDoc( Object ... kvp )