Package org.apache.lucene.facet.search
Class TopKFacetResultsHandler
- java.lang.Object
-
- org.apache.lucene.facet.search.FacetResultsHandler
-
- org.apache.lucene.facet.search.TopKFacetResultsHandler
-
public class TopKFacetResultsHandler extends FacetResultsHandler
Generate Top-K results for a particular FacetRequest.K is global (among all results) and is defined by
FacetRequest.getNumResults().Note: Values of 0 (Zero) are ignored by this results handler.
- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
-
Field Summary
-
Fields inherited from class org.apache.lucene.facet.search.FacetResultsHandler
facetRequest, taxonomyReader
-
-
Constructor Summary
Constructors Constructor Description TopKFacetResultsHandler(TaxonomyReader taxonomyReader, FacetRequest facetRequest)Construct top-K results handler.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description IntermediateFacetResultfetchPartitionResult(FacetArrays facetArrays, int offset)Fetch results of a single partition, given facet arrays for that partition, and based on the matching documents and faceted search parameters.voidlabelResult(FacetResult facetResult)Label results according to settings inFacetRequest, such asFacetRequest.getNumLabel().IntermediateFacetResultmergeResults(IntermediateFacetResult... tmpResults)Merge results of several facet partitions.FacetResultrearrangeFacetResult(FacetResult facetResult)Perform any rearrangement as required on a facet result that has changed after it was rendered.FacetResultrenderFacetResult(IntermediateFacetResult tmpResult)Create a facet result from the temporary result.-
Methods inherited from class org.apache.lucene.facet.search.FacetResultsHandler
getFacetRequest, getTaxonomyReader, isSelfPartition
-
-
-
-
Constructor Detail
-
TopKFacetResultsHandler
public TopKFacetResultsHandler(TaxonomyReader taxonomyReader, FacetRequest facetRequest)
Construct top-K results handler.- Parameters:
taxonomyReader- taxonomy readerfacetRequest- facet request being served
-
-
Method Detail
-
fetchPartitionResult
public IntermediateFacetResult fetchPartitionResult(FacetArrays facetArrays, int offset) throws IOException
Description copied from class:FacetResultsHandlerFetch results of a single partition, given facet arrays for that partition, and based on the matching documents and faceted search parameters.- Specified by:
fetchPartitionResultin classFacetResultsHandler- Parameters:
facetArrays- facet arrays for the certain partitionoffset- 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 parametertaxonomyReader. - Throws:
IOException- on error
-
mergeResults
public IntermediateFacetResult mergeResults(IntermediateFacetResult... tmpResults) throws IOException
Description copied from class:FacetResultsHandlerMerge results of several facet partitions. Logic of the merge is undefined and open for interpretations. For example, a merge implementation could keep top K results. PassedIntermediateFacetResultmust be ones that were created by this handler otherwise aClassCastExceptionis thrown. In addition, all passedIntermediateFacetResultmust have the sameFacetRequestotherwise anIllegalArgumentExceptionis thrown.- Specified by:
mergeResultsin classFacetResultsHandler- Parameters:
tmpResults- one or more temporary results created by this handler.- Returns:
- temporary facet result that represents to union, as specified by this handler, of the input temporary facet results.
- Throws:
IOException- on error.- See Also:
IntermediateFacetResult.getFacetRequest()
-
renderFacetResult
public FacetResult renderFacetResult(IntermediateFacetResult tmpResult)
Description copied from class:FacetResultsHandlerCreate a facet result from the temporary result.- Specified by:
renderFacetResultin classFacetResultsHandler- Parameters:
tmpResult- temporary result to be rendered as aFacetResult
-
rearrangeFacetResult
public FacetResult rearrangeFacetResult(FacetResult facetResult)
Description copied from class:FacetResultsHandlerPerform 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.
- Specified by:
rearrangeFacetResultin classFacetResultsHandler- Parameters:
facetResult- result to be rearranged.- See Also:
FacetResultNode.setValue(double)
-
labelResult
public void labelResult(FacetResult facetResult) throws IOException
Description copied from class:FacetResultsHandlerLabel results according to settings inFacetRequest, such asFacetRequest.getNumLabel(). Usually invoked byFacetsAccumulator.accumulate(ScoredDocIDs)- Specified by:
labelResultin classFacetResultsHandler- Parameters:
facetResult- facet result to be labeled.- Throws:
IOException- on error
-
-