Yuti-G commented on code in PR #914: URL: https://github.com/apache/lucene/pull/914#discussion_r900427716
########## lucene/facet/src/java/org/apache/lucene/facet/taxonomy/IntTaxonomyFacets.java: ########## @@ -163,6 +164,76 @@ public Number getSpecificValue(String dim, String... path) throws IOException { return getValue(ord); } + @Override + public FacetResult getAllChildren(String dim, String... path) throws IOException { + DimConfig dimConfig = verifyDim(dim); + FacetLabel cp = new FacetLabel(dim, path); + int dimOrd = taxoReader.getOrdinal(cp); + if (dimOrd == -1) { + return null; + } + + int aggregatedValue = 0; + int childCount = 0; + + List<Integer> ordinals = new ArrayList<>(); + List<Integer> ordValues = new ArrayList<>(); + + if (sparseValues != null) { + for (IntIntCursor c : sparseValues) { + int value = c.value; + int ord = c.key; + if (parents[ord] == dimOrd && value > 0) { + aggregatedValue = aggregationFunction.aggregate(aggregatedValue, value); + childCount++; + ordinals.add(ord); + ordValues.add(value); + } + } + } else { + int[] children = getChildren(); + int[] siblings = getSiblings(); + int ord = children[dimOrd]; + while (ord != TaxonomyReader.INVALID_ORDINAL) { + int value = values[ord]; + if (value > 0) { + aggregatedValue = aggregationFunction.aggregate(aggregatedValue, value); + childCount++; + ordinals.add(ord); + ordValues.add(value); + } + ord = siblings[ord]; + } + } + + if (aggregatedValue == 0) { + return null; + } + + if (dimConfig.multiValued) { + if (dimConfig.requireDimCount) { + aggregatedValue = getValue(dimOrd); + } else { + // Our sum'd value is not correct, in general: + aggregatedValue = -1; + } + } else { + // Our sum'd dim value is accurate, so we keep it + } + + int[] ordinalArray = new int[ordinals.size()]; + for (int i = 0; i < ordinals.size(); i++) { + ordinalArray[i] = ordinals.get(i); + } Review Comment: `getBulkPath` only takes in int array and I would need to cast `List<Integer>` to `int[]` here. Please advise me if there is a cleaner way to do so. Thanks! -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org