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