DrillSideways假定您仅使用TaxonomyFacets或SortedSetDocValuesFacets。如果不是这种情况,则可以根据需要将DrillSideways子类化并覆盖该
buildFacetsResult方法以构建最终的Facet
。对于您添加到DrissSideways中的每个暗角,您将获得用于DrillDownQuery的FacetsCollector和两个带有侧面FacetCollectors和暗角的数组。
这是一个例子:
public class MyDrillSideways extends DrillSideways { public MyDrillSideways(IndexSearcher searcher, FacetsConfig config, TaxonomyReader taxoReader) { super(searcher, config, taxoReader); } @Override protected Facets buildFacetsResult(FacetsCollector drillDowns, FacetsCollector[] drillSideways, String[] drillSidewaysDims) throws IOException { String longRangeFacetDim = "mySpecialLongRangeDim"; Facets drillDownFacets = new FastTaxonomyFacetCounts(taxoReader, config, drillDowns); boolean foundLongRangeInDrillSideways = false; Map<String, Facets> drillSidewaysFacets = new HashMap<>(); if (drillSideways != null) { for (int i = 0; i < drillSideways.length; i++) { String sidewaysDim = drillSidewaysDims[i]; FacetsCollector drillSideway = drillSideways[i]; Facets sidewaysFacets; if (sidewaysDim.equals(longRangeFacetDim)) { foundLongRangeInDrillSideways = true; sidewaysFacets = new LongRangeFacetCounts(...,drillSideway,...); } else { sidewaysFacets = new FastTaxonomyFacetCounts(taxoReader, config, drillSideway); } drillSidewaysFacets.put(sidewaysDim, sidewaysFacets); } } if (!foundLongRangeInDrillSideways) { Facets facetsTime = new LongRangeFacetCounts(..., FacetsCollector, ...); drillSidewaysFacets.put(longRangeFacetDim, facetsTime); } return new MultiFacets(drillSidewaysFacets, drillDownFacets); }}


