Class FacetResultsHandler

  • Direct Known Subclasses:
    TopKFacetResultsHandler, TopKInEachNodeHandler

    public abstract class FacetResultsHandler
    extends Object
    Handler for facet results.

    The facet results handler provided by the FacetRequest to a FacetsAccumulator.

    First it is used by FacetsAccumulator to obtain a temporary facet result for each partition and to merge results of several partitions.

    Later the accumulator invokes the handler to render the results, creating FacetResult objects.

    Last the accumulator invokes the handler to label final results.

    WARNING: This API is experimental and might change in incompatible ways in the next release.
    • Field Detail

      • taxonomyReader

        protected final TaxonomyReader taxonomyReader
        Taxonomy for which facets are handled
      • facetRequest

        protected final FacetRequest facetRequest
        Facet request served by this handler.
    • Method Detail

      • fetchPartitionResult

        public abstract IntermediateFacetResult fetchPartitionResult​(FacetArrays arrays,
                                                                     int offset)
                                                              throws IOException
        Fetch results of a single partition, given facet arrays for that partition, and based on the matching documents and faceted search parameters.
        Parameters:
        arrays - facet arrays for the certain partition
        offset - offset in input arrays where partition starts
        Returns:
        temporary facet result, potentially, to be passed back to this result handler for merging, or null in case that constructor parameter, facetRequest, requests an illegal FacetResult, like, e.g., a root node category path that does not exist in constructor parameter taxonomyReader .
        Throws:
        IOException - on error
      • rearrangeFacetResult

        public abstract FacetResult rearrangeFacetResult​(FacetResult facetResult)
        Perform any rearrangement as required on a facet result that has changed after it was rendered.

        Possible use case: a sampling facets accumulator invoked another other facets accumulator on a sample set of documents, obtained rendered facet results, fixed their counts, and now it is needed to sort the results differently according to the fixed counts.

        Parameters:
        facetResult - result to be rearranged.
        See Also:
        FacetResultNode.setValue(double)
      • getTaxonomyReader

        public final TaxonomyReader getTaxonomyReader()
        Return taxonomy reader used for current facets accumulation operation.
      • getFacetRequest

        public final FacetRequest getFacetRequest()
        Return the facet request served by this handler.
      • isSelfPartition

        protected boolean isSelfPartition​(int ordinal,
                                          FacetArrays facetArrays,
                                          int offset)
        Check if an array contains the partition which contains ordinal
        Parameters:
        ordinal - checked facet
        facetArrays - facet arrays for the certain partition
        offset - offset in input arrays where partition starts