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 )