org.apache.lucene.facet.search
Class SamplingWrapper

java.lang.Object
  extended by org.apache.lucene.facet.search.FacetsAccumulator
      extended by org.apache.lucene.facet.search.SamplingWrapper

public class SamplingWrapper
extends FacetsAccumulator

Wrap any Facets Accumulator with sampling.

Note: Sampling accumulation (Accumulation over a sampled-set of the results), does not guarantee accurate values for FacetResult.getNumValidDescendants() & FacetResultNode.getResidue().

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.FacetsAccumulator
DEFAULT_COMPLEMENT_THRESHOLD, DISABLE_COMPLEMENT, FORCE_COMPLEMENT, indexReader, searchParams, taxonomyReader
 
Constructor Summary
SamplingWrapper(FacetsAccumulator delegee, Sampler sampler)
           
 
Method Summary
 List<FacetResult> accumulate(ScoredDocIDs docids)
          Accumulate facets over given documents, according to facet requests in effect.
 double getComplementThreshold()
           
protected  boolean isAllowLabeling()
          Check if labeling is allowed for this accumulator.
protected  void setAllowLabeling(boolean allowLabeling)
          Set whether labeling is allowed for this accumulator.
 void setComplementThreshold(double complementThreshold)
          Set the complement threshold.
 
Methods inherited from class org.apache.lucene.facet.search.FacetsAccumulator
mayComplement
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SamplingWrapper

public SamplingWrapper(FacetsAccumulator delegee,
                       Sampler sampler)
Method Detail

accumulate

public List<FacetResult> accumulate(ScoredDocIDs docids)
                             throws IOException
Description copied from class: FacetsAccumulator
Accumulate facets over given documents, according to facet requests in effect.

Specified by:
accumulate in class FacetsAccumulator
Parameters:
docids - documents (and their scores) for which facets are Accumulated.
Returns:
Accumulated facets.
Throws:
IOException - on error.

getComplementThreshold

public double getComplementThreshold()
Overrides:
getComplementThreshold in class FacetsAccumulator
Returns:
the complement threshold
See Also:
FacetsAccumulator.getComplementThreshold()

setComplementThreshold

public void setComplementThreshold(double complementThreshold)
Description copied from class: FacetsAccumulator
Set the complement threshold. This threshold will dictate whether the complements optimization is applied. The optimization is to count for less documents. It is useful when the same FacetSearchParams are used for varying sets of documents. The first time complements is used the "total counts" are computed - counting for all the documents in the collection. Then, only the complementing set of documents is considered, and used to decrement from the overall counts, thereby walking through less documents, which is faster.

Note that this optimization is only available when searching an index whose IndexReader implements both IndexReader.directory() and IndexReader.getVersion() otherwise the optimization is silently disabled regardless of the complement threshold settings.

For the default settings see FacetsAccumulator.DEFAULT_COMPLEMENT_THRESHOLD.

To forcing complements in all cases pass FacetsAccumulator.FORCE_COMPLEMENT. This is mostly useful for testing purposes, as forcing complements when only tiny fraction of available documents match the query does not make sense and would incur performance degradations.

To disable complements pass FacetsAccumulator.DISABLE_COMPLEMENT.

Overrides:
setComplementThreshold in class FacetsAccumulator
Parameters:
complementThreshold -
See Also:
FacetsAccumulator.setComplementThreshold(double)

isAllowLabeling

protected boolean isAllowLabeling()
Description copied from class: FacetsAccumulator
Check if labeling is allowed for this accumulator.

By default labeling is allowed. This allows one accumulator to invoke other accumulators for accumulation but keep to itself the responsibility of labeling. This might br handy since labeling is a costly operation.

Overrides:
isAllowLabeling in class FacetsAccumulator
Returns:
true of labeling is allowed for this accumulator
See Also:
FacetsAccumulator.setAllowLabeling(boolean)

setAllowLabeling

protected void setAllowLabeling(boolean allowLabeling)
Description copied from class: FacetsAccumulator
Set whether labeling is allowed for this accumulator.

Overrides:
setAllowLabeling in class FacetsAccumulator
Parameters:
allowLabeling - new setting for allow labeling
See Also:
FacetsAccumulator.isAllowLabeling()