Author: ssmiweve
Date: 2009-07-14 14:40:14 +0200 (Tue, 14 Jul 2009)
New Revision: 7237

Modified:
   
branches/2.18/generic.sesam/search-command-control/default/src/main/java/no/sesat/search/mode/command/SolrSimpleFacetToolkitImpl.java
Log:
hiearchical facets: create & collect children facets

Modified: 
branches/2.18/generic.sesam/search-command-control/default/src/main/java/no/sesat/search/mode/command/SolrSimpleFacetToolkitImpl.java
===================================================================
--- 
branches/2.18/generic.sesam/search-command-control/default/src/main/java/no/sesat/search/mode/command/SolrSimpleFacetToolkitImpl.java
       2009-07-14 10:41:17 UTC (rev 7236)
+++ 
branches/2.18/generic.sesam/search-command-control/default/src/main/java/no/sesat/search/mode/command/SolrSimpleFacetToolkitImpl.java
       2009-07-14 12:40:14 UTC (rev 7237)
@@ -58,14 +58,7 @@
 
         final Map<String, Navigator> facets = 
getSearchConfiguration(context).getFacets();
         for (final Navigator facet : facets.values()) {
-            final FacetField field = response.getFacetField(facet.getField());
-            // facet counters
-            if(null != field && null != field.getValues()){
-                for (FacetField.Count c : field.getValues()){
-                    final Modifier mod = new Modifier(c.getName(), 
(int)c.getCount(), facet);
-                    searchResult.addModifier(facet.getId(), mod);
-                }
-            }
+            collectFacet(context, response, searchResult, facet);
         }
     }
 
@@ -92,9 +85,33 @@
 
                 query.addFilterQuery(facet.getField() + ':' + value);
             }
+            // request children facets of any selected facet
+            if(null != facet.getChildNavigator()){
+                createFacet(context, facet.getChildNavigator(), query);
+            }
         }
     }
 
+    private void collectFacet(
+            final SearchCommand.Context context,
+            final QueryResponse response,
+            final FacetedSearchResult<? extends ResultItem> searchResult,
+            final Navigator facet){
+
+        final FacetField field = response.getFacetField(facet.getField());
+        // facet counters
+        if(null != field && null != field.getValues()){
+            for (FacetField.Count c : field.getValues()){
+                final Modifier mod = new Modifier(c.getName(), 
(int)c.getCount(), facet);
+                searchResult.addModifier(facet.getId(), mod);
+            }
+            // collect children facets
+            if(null != facet.getChildNavigator()){
+               collectFacet(context, response, searchResult, 
facet.getChildNavigator());
+            }
+        }
+    }
+
     private FacetedCommandConfig getSearchConfiguration(final 
SearchCommand.Context context) {
         return (FacetedCommandConfig) context.getSearchConfiguration();
     }

_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits

Reply via email to