mirror of https://github.com/apache/lucene.git
LUCENE-5144: remove FacetRequest.createAggregator, rename StandardFacetsAccumulator to OldFA and move it and associated classes under o.a.l.facet.old
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1508085 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
bb1164b2fc
commit
8c55fcde84
|
@ -109,6 +109,13 @@ API Changes
|
||||||
writers, make sure to clone it before passing to each writer.
|
writers, make sure to clone it before passing to each writer.
|
||||||
(Shai Erera, Mike McCandless)
|
(Shai Erera, Mike McCandless)
|
||||||
|
|
||||||
|
* LUCENE-5144: StandardFacetsAccumulator renamed to OldFacetsAccumulator, and all
|
||||||
|
associated classes were moved under o.a.l.facet.old. The intention to remove it
|
||||||
|
one day, when the features it covers (complements, partitiona, sampling) will be
|
||||||
|
migrated to the new FacetsAggregator and FacetsAccumulator API. Also,
|
||||||
|
FacetRequest.createAggregator was replaced by OldFacetsAccumulator.createAggregator.
|
||||||
|
(Shai Erera)
|
||||||
|
|
||||||
Optimizations
|
Optimizations
|
||||||
|
|
||||||
* LUCENE-5088: Added TermFilter to filter docs by a specific term.
|
* LUCENE-5088: Added TermFilter to filter docs by a specific term.
|
||||||
|
|
|
@ -11,20 +11,20 @@ import java.io.IOException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
|
import org.apache.lucene.facet.old.Aggregator;
|
||||||
|
import org.apache.lucene.facet.old.CountingAggregator;
|
||||||
|
import org.apache.lucene.facet.old.OldFacetsAccumulator;
|
||||||
|
import org.apache.lucene.facet.old.ScoredDocIdsUtils;
|
||||||
import org.apache.lucene.facet.params.CategoryListParams;
|
import org.apache.lucene.facet.params.CategoryListParams;
|
||||||
import org.apache.lucene.facet.params.FacetIndexingParams;
|
import org.apache.lucene.facet.params.FacetIndexingParams;
|
||||||
import org.apache.lucene.facet.params.FacetSearchParams;
|
import org.apache.lucene.facet.params.FacetSearchParams;
|
||||||
import org.apache.lucene.facet.search.Aggregator;
|
|
||||||
import org.apache.lucene.facet.search.CategoryListIterator;
|
import org.apache.lucene.facet.search.CategoryListIterator;
|
||||||
import org.apache.lucene.facet.search.CountFacetRequest;
|
import org.apache.lucene.facet.search.CountFacetRequest;
|
||||||
import org.apache.lucene.facet.search.CountingAggregator;
|
|
||||||
import org.apache.lucene.facet.search.FacetArrays;
|
import org.apache.lucene.facet.search.FacetArrays;
|
||||||
import org.apache.lucene.facet.search.FacetRequest;
|
import org.apache.lucene.facet.search.FacetRequest;
|
||||||
import org.apache.lucene.facet.search.StandardFacetsAccumulator;
|
|
||||||
import org.apache.lucene.facet.taxonomy.CategoryPath;
|
import org.apache.lucene.facet.taxonomy.CategoryPath;
|
||||||
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
||||||
import org.apache.lucene.facet.util.PartitionsUtils;
|
import org.apache.lucene.facet.util.PartitionsUtils;
|
||||||
import org.apache.lucene.facet.util.ScoredDocIdsUtils;
|
|
||||||
import org.apache.lucene.index.IndexReader;
|
import org.apache.lucene.index.IndexReader;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -159,7 +159,7 @@ public class TotalFacetCounts {
|
||||||
final int[][] counts = new int[(int) Math.ceil(taxonomy.getSize() /(float) partitionSize)][partitionSize];
|
final int[][] counts = new int[(int) Math.ceil(taxonomy.getSize() /(float) partitionSize)][partitionSize];
|
||||||
FacetSearchParams newSearchParams = new FacetSearchParams(facetIndexingParams, DUMMY_REQ);
|
FacetSearchParams newSearchParams = new FacetSearchParams(facetIndexingParams, DUMMY_REQ);
|
||||||
//createAllListsSearchParams(facetIndexingParams, this.totalCounts);
|
//createAllListsSearchParams(facetIndexingParams, this.totalCounts);
|
||||||
StandardFacetsAccumulator sfa = new StandardFacetsAccumulator(newSearchParams, indexReader, taxonomy) {
|
OldFacetsAccumulator sfa = new OldFacetsAccumulator(newSearchParams, indexReader, taxonomy) {
|
||||||
@Override
|
@Override
|
||||||
protected HashMap<CategoryListIterator, Aggregator> getCategoryListMap(
|
protected HashMap<CategoryListIterator, Aggregator> getCategoryListMap(
|
||||||
FacetArrays facetArrays, int partition) throws IOException {
|
FacetArrays facetArrays, int partition) throws IOException {
|
||||||
|
@ -172,7 +172,7 @@ public class TotalFacetCounts {
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
sfa.setComplementThreshold(StandardFacetsAccumulator.DISABLE_COMPLEMENT);
|
sfa.setComplementThreshold(OldFacetsAccumulator.DISABLE_COMPLEMENT);
|
||||||
sfa.accumulate(ScoredDocIdsUtils.createAllDocsScoredDocIDs(indexReader));
|
sfa.accumulate(ScoredDocIdsUtils.createAllDocsScoredDocIDs(indexReader));
|
||||||
return new TotalFacetCounts(taxonomy, facetIndexingParams, counts, CreationType.Computed);
|
return new TotalFacetCounts(taxonomy, facetIndexingParams, counts, CreationType.Computed);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package org.apache.lucene.facet.search;
|
package org.apache.lucene.facet.old;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -7,6 +7,9 @@ import org.apache.lucene.facet.params.FacetSearchParams;
|
||||||
import org.apache.lucene.facet.sampling.RandomSampler;
|
import org.apache.lucene.facet.sampling.RandomSampler;
|
||||||
import org.apache.lucene.facet.sampling.Sampler;
|
import org.apache.lucene.facet.sampling.Sampler;
|
||||||
import org.apache.lucene.facet.sampling.SamplingAccumulator;
|
import org.apache.lucene.facet.sampling.SamplingAccumulator;
|
||||||
|
import org.apache.lucene.facet.search.FacetArrays;
|
||||||
|
import org.apache.lucene.facet.search.FacetResult;
|
||||||
|
import org.apache.lucene.facet.search.FacetsAccumulator;
|
||||||
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
||||||
import org.apache.lucene.index.IndexReader;
|
import org.apache.lucene.index.IndexReader;
|
||||||
|
|
||||||
|
@ -39,13 +42,13 @@ import org.apache.lucene.index.IndexReader;
|
||||||
*
|
*
|
||||||
* @lucene.experimental
|
* @lucene.experimental
|
||||||
*/
|
*/
|
||||||
public final class AdaptiveFacetsAccumulator extends StandardFacetsAccumulator {
|
public final class AdaptiveFacetsAccumulator extends OldFacetsAccumulator {
|
||||||
|
|
||||||
private Sampler sampler = new RandomSampler();
|
private Sampler sampler = new RandomSampler();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an {@link AdaptiveFacetsAccumulator}
|
* Create an {@link AdaptiveFacetsAccumulator}
|
||||||
* @see StandardFacetsAccumulator#StandardFacetsAccumulator(FacetSearchParams, IndexReader, TaxonomyReader)
|
* @see OldFacetsAccumulator#OldFacetsAccumulator(FacetSearchParams, IndexReader, TaxonomyReader)
|
||||||
*/
|
*/
|
||||||
public AdaptiveFacetsAccumulator(FacetSearchParams searchParams, IndexReader indexReader,
|
public AdaptiveFacetsAccumulator(FacetSearchParams searchParams, IndexReader indexReader,
|
||||||
TaxonomyReader taxonomyReader) {
|
TaxonomyReader taxonomyReader) {
|
||||||
|
@ -55,7 +58,7 @@ public final class AdaptiveFacetsAccumulator extends StandardFacetsAccumulator {
|
||||||
/**
|
/**
|
||||||
* Create an {@link AdaptiveFacetsAccumulator}
|
* Create an {@link AdaptiveFacetsAccumulator}
|
||||||
*
|
*
|
||||||
* @see StandardFacetsAccumulator#StandardFacetsAccumulator(FacetSearchParams,
|
* @see OldFacetsAccumulator#OldFacetsAccumulator(FacetSearchParams,
|
||||||
* IndexReader, TaxonomyReader, FacetArrays)
|
* IndexReader, TaxonomyReader, FacetArrays)
|
||||||
*/
|
*/
|
||||||
public AdaptiveFacetsAccumulator(FacetSearchParams searchParams, IndexReader indexReader,
|
public AdaptiveFacetsAccumulator(FacetSearchParams searchParams, IndexReader indexReader,
|
||||||
|
@ -73,7 +76,7 @@ public final class AdaptiveFacetsAccumulator extends StandardFacetsAccumulator {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<FacetResult> accumulate(ScoredDocIDs docids) throws IOException {
|
public List<FacetResult> accumulate(ScoredDocIDs docids) throws IOException {
|
||||||
StandardFacetsAccumulator delegee = appropriateFacetCountingAccumulator(docids);
|
OldFacetsAccumulator delegee = appropriateFacetCountingAccumulator(docids);
|
||||||
|
|
||||||
if (delegee == this) {
|
if (delegee == this) {
|
||||||
return super.accumulate(docids);
|
return super.accumulate(docids);
|
||||||
|
@ -86,7 +89,7 @@ public final class AdaptiveFacetsAccumulator extends StandardFacetsAccumulator {
|
||||||
* Compute the appropriate facet accumulator to use.
|
* Compute the appropriate facet accumulator to use.
|
||||||
* If no special/clever adaptation is possible/needed return this (self).
|
* If no special/clever adaptation is possible/needed return this (self).
|
||||||
*/
|
*/
|
||||||
private StandardFacetsAccumulator appropriateFacetCountingAccumulator(ScoredDocIDs docids) {
|
private OldFacetsAccumulator appropriateFacetCountingAccumulator(ScoredDocIDs docids) {
|
||||||
// Verify that searchPareams permit sampling/complement/etc... otherwise do default
|
// Verify that searchPareams permit sampling/complement/etc... otherwise do default
|
||||||
if (!mayComplement()) {
|
if (!mayComplement()) {
|
||||||
return this;
|
return this;
|
|
@ -1,4 +1,4 @@
|
||||||
package org.apache.lucene.facet.search;
|
package org.apache.lucene.facet.old;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
package org.apache.lucene.facet.complements;
|
package org.apache.lucene.facet.old;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.apache.lucene.facet.search.CountingAggregator;
|
|
||||||
import org.apache.lucene.util.IntsRef;
|
import org.apache.lucene.util.IntsRef;
|
||||||
|
|
||||||
/*
|
/*
|
|
@ -1,4 +1,4 @@
|
||||||
package org.apache.lucene.facet.search;
|
package org.apache.lucene.facet.old;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
@ -23,9 +23,9 @@ import org.apache.lucene.util.IntsRef;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A CountingAggregator updates a counter array with the size of the whole
|
* An {@link Aggregator} which updates a counter array with the size of the
|
||||||
* taxonomy, counting the number of times each category appears in the given set
|
* whole taxonomy, counting the number of times each category appears in the
|
||||||
* of documents.
|
* given set of documents.
|
||||||
*
|
*
|
||||||
* @lucene.experimental
|
* @lucene.experimental
|
||||||
*/
|
*/
|
|
@ -1,4 +1,4 @@
|
||||||
package org.apache.lucene.facet.search;
|
package org.apache.lucene.facet.old;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
|
@ -1,4 +1,4 @@
|
||||||
package org.apache.lucene.facet.search;
|
package org.apache.lucene.facet.old;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -7,8 +7,6 @@ import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.logging.Level;
|
|
||||||
import java.util.logging.Logger;
|
|
||||||
|
|
||||||
import org.apache.lucene.facet.complements.TotalFacetCounts;
|
import org.apache.lucene.facet.complements.TotalFacetCounts;
|
||||||
import org.apache.lucene.facet.complements.TotalFacetCountsCache;
|
import org.apache.lucene.facet.complements.TotalFacetCountsCache;
|
||||||
|
@ -16,11 +14,22 @@ import org.apache.lucene.facet.params.FacetIndexingParams;
|
||||||
import org.apache.lucene.facet.params.FacetSearchParams;
|
import org.apache.lucene.facet.params.FacetSearchParams;
|
||||||
import org.apache.lucene.facet.partitions.IntermediateFacetResult;
|
import org.apache.lucene.facet.partitions.IntermediateFacetResult;
|
||||||
import org.apache.lucene.facet.partitions.PartitionsFacetResultsHandler;
|
import org.apache.lucene.facet.partitions.PartitionsFacetResultsHandler;
|
||||||
|
import org.apache.lucene.facet.sampling.Sampler.OverSampledFacetRequest;
|
||||||
|
import org.apache.lucene.facet.search.CategoryListIterator;
|
||||||
|
import org.apache.lucene.facet.search.CountFacetRequest;
|
||||||
|
import org.apache.lucene.facet.search.FacetArrays;
|
||||||
|
import org.apache.lucene.facet.search.FacetRequest;
|
||||||
import org.apache.lucene.facet.search.FacetRequest.ResultMode;
|
import org.apache.lucene.facet.search.FacetRequest.ResultMode;
|
||||||
|
import org.apache.lucene.facet.search.FacetResult;
|
||||||
|
import org.apache.lucene.facet.search.FacetsAccumulator;
|
||||||
|
import org.apache.lucene.facet.search.FacetsAggregator;
|
||||||
import org.apache.lucene.facet.search.FacetsCollector.MatchingDocs;
|
import org.apache.lucene.facet.search.FacetsCollector.MatchingDocs;
|
||||||
|
import org.apache.lucene.facet.search.SumScoreFacetRequest;
|
||||||
|
import org.apache.lucene.facet.search.TaxonomyFacetsAccumulator;
|
||||||
|
import org.apache.lucene.facet.search.TopKFacetResultsHandler;
|
||||||
|
import org.apache.lucene.facet.search.TopKInEachNodeHandler;
|
||||||
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
||||||
import org.apache.lucene.facet.util.PartitionsUtils;
|
import org.apache.lucene.facet.util.PartitionsUtils;
|
||||||
import org.apache.lucene.facet.util.ScoredDocIdsUtils;
|
|
||||||
import org.apache.lucene.index.AtomicReaderContext;
|
import org.apache.lucene.index.AtomicReaderContext;
|
||||||
import org.apache.lucene.index.IndexReader;
|
import org.apache.lucene.index.IndexReader;
|
||||||
import org.apache.lucene.util.IntsRef;
|
import org.apache.lucene.util.IntsRef;
|
||||||
|
@ -43,30 +52,20 @@ import org.apache.lucene.util.IntsRef;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Standard implementation for {@link TaxonomyFacetsAccumulator}, utilizing partitions to save on memory.
|
* A {@link FacetsAccumulator} which supports partitions, sampling and
|
||||||
|
* complement counting.
|
||||||
* <p>
|
* <p>
|
||||||
* Why partitions? Because if there are say 100M categories out of which
|
* <b>NOTE:</b> this accumulator still uses the old API and will be removed
|
||||||
* only top K are required, we must first compute value for all 100M categories
|
* eventually in favor of dedicated accumulators which support the above
|
||||||
* (going over all documents) and only then could we select top K.
|
* features ovee the new {@link FacetsAggregator} API. It provides
|
||||||
* This is made easier on memory by working in partitions of distinct categories:
|
* {@link Aggregator} implementations for {@link CountFacetRequest},
|
||||||
* Once a values for a partition are found, we take the top K for that
|
* {@link SumScoreFacetRequest} and {@link OverSampledFacetRequest}. If you need
|
||||||
* partition and work on the next partition, them merge the top K of both,
|
* to use it in conjunction with other facet requests, you should override
|
||||||
* and so forth, thereby computing top K with RAM needs for the size of
|
* {@link #createAggregator(FacetRequest, FacetArrays)}.
|
||||||
* a single partition rather than for the size of all the 100M categories.
|
|
||||||
* <p>
|
|
||||||
* Decision on partitions size is done at indexing time, and the facet information
|
|
||||||
* for each partition is maintained separately.
|
|
||||||
* <p>
|
|
||||||
* <u>Implementation detail:</u> Since facets information of each partition is
|
|
||||||
* maintained in a separate "category list", we can be more efficient
|
|
||||||
* at search time, because only the facet info for a single partition
|
|
||||||
* need to be read while processing that partition.
|
|
||||||
*
|
*
|
||||||
* @lucene.experimental
|
* @lucene.experimental
|
||||||
*/
|
*/
|
||||||
public class StandardFacetsAccumulator extends TaxonomyFacetsAccumulator {
|
public class OldFacetsAccumulator extends TaxonomyFacetsAccumulator {
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(StandardFacetsAccumulator.class.getName());
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default threshold for using the complements optimization.
|
* Default threshold for using the complements optimization.
|
||||||
|
@ -100,12 +99,12 @@ public class StandardFacetsAccumulator extends TaxonomyFacetsAccumulator {
|
||||||
return new FacetArrays(PartitionsUtils.partitionSize(searchParams.indexingParams, taxoReader));
|
return new FacetArrays(PartitionsUtils.partitionSize(searchParams.indexingParams, taxoReader));
|
||||||
}
|
}
|
||||||
|
|
||||||
public StandardFacetsAccumulator(FacetSearchParams searchParams, IndexReader indexReader,
|
public OldFacetsAccumulator(FacetSearchParams searchParams, IndexReader indexReader,
|
||||||
TaxonomyReader taxonomyReader) {
|
TaxonomyReader taxonomyReader) {
|
||||||
this(searchParams, indexReader, taxonomyReader, null);
|
this(searchParams, indexReader, taxonomyReader, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public StandardFacetsAccumulator(FacetSearchParams searchParams, IndexReader indexReader,
|
public OldFacetsAccumulator(FacetSearchParams searchParams, IndexReader indexReader,
|
||||||
TaxonomyReader taxonomyReader, FacetArrays facetArrays) {
|
TaxonomyReader taxonomyReader, FacetArrays facetArrays) {
|
||||||
super(searchParams, indexReader, taxonomyReader, facetArrays == null ? createFacetArrays(searchParams, taxonomyReader) : facetArrays);
|
super(searchParams, indexReader, taxonomyReader, facetArrays == null ? createFacetArrays(searchParams, taxonomyReader) : facetArrays);
|
||||||
|
|
||||||
|
@ -143,14 +142,8 @@ public class StandardFacetsAccumulator extends TaxonomyFacetsAccumulator {
|
||||||
// MultiReader, which might be problematic for several applications.
|
// MultiReader, which might be problematic for several applications.
|
||||||
// We could, for example, base our "isCurrent" logic on something else
|
// We could, for example, base our "isCurrent" logic on something else
|
||||||
// than the reader's version. Need to think more deeply about it.
|
// than the reader's version. Need to think more deeply about it.
|
||||||
if (logger.isLoggable(Level.FINEST)) {
|
|
||||||
logger.log(Level.FINEST, "IndexReader used does not support completents: ", e);
|
|
||||||
}
|
|
||||||
isUsingComplements = false;
|
isUsingComplements = false;
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
if (logger.isLoggable(Level.FINEST)) {
|
|
||||||
logger.log(Level.FINEST, "Failed to load/calculate total counts (complement counting disabled): ", e);
|
|
||||||
}
|
|
||||||
// silently fail if for some reason failed to load/save from/to dir
|
// silently fail if for some reason failed to load/save from/to dir
|
||||||
isUsingComplements = false;
|
isUsingComplements = false;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -224,7 +217,7 @@ public class StandardFacetsAccumulator extends TaxonomyFacetsAccumulator {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected PartitionsFacetResultsHandler createFacetResultsHandler(FacetRequest fr) {
|
public PartitionsFacetResultsHandler createFacetResultsHandler(FacetRequest fr) {
|
||||||
if (fr.getResultMode() == ResultMode.PER_NODE_IN_TREE) {
|
if (fr.getResultMode() == ResultMode.PER_NODE_IN_TREE) {
|
||||||
return new TopKInEachNodeHandler(taxonomyReader, fr, facetArrays);
|
return new TopKInEachNodeHandler(taxonomyReader, fr, facetArrays);
|
||||||
} else {
|
} else {
|
||||||
|
@ -340,6 +333,28 @@ public class StandardFacetsAccumulator extends TaxonomyFacetsAccumulator {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected Aggregator createAggregator(FacetRequest fr, FacetArrays facetArrays) {
|
||||||
|
if (fr instanceof CountFacetRequest) {
|
||||||
|
// we rely on that, if needed, result is cleared by arrays!
|
||||||
|
int[] a = facetArrays.getIntArray();
|
||||||
|
if (isUsingComplements) {
|
||||||
|
return new ComplementCountingAggregator(a);
|
||||||
|
} else {
|
||||||
|
return new CountingAggregator(a);
|
||||||
|
}
|
||||||
|
} else if (fr instanceof SumScoreFacetRequest) {
|
||||||
|
if (isUsingComplements) {
|
||||||
|
throw new IllegalArgumentException("complements are not supported by this SumScoreFacetRequest");
|
||||||
|
} else {
|
||||||
|
return new ScoringAggregator(facetArrays.getFloatArray());
|
||||||
|
}
|
||||||
|
} else if (fr instanceof OverSampledFacetRequest) {
|
||||||
|
return createAggregator(((OverSampledFacetRequest) fr).orig, facetArrays);
|
||||||
|
} else {
|
||||||
|
throw new IllegalArgumentException("unknown Aggregator implementation for request " + fr.getClass());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an {@link Aggregator} and a {@link CategoryListIterator} for each
|
* Create an {@link Aggregator} and a {@link CategoryListIterator} for each
|
||||||
* and every {@link FacetRequest}. Generating a map, matching each
|
* and every {@link FacetRequest}. Generating a map, matching each
|
||||||
|
@ -359,7 +374,7 @@ public class StandardFacetsAccumulator extends TaxonomyFacetsAccumulator {
|
||||||
|
|
||||||
FacetIndexingParams indexingParams = searchParams.indexingParams;
|
FacetIndexingParams indexingParams = searchParams.indexingParams;
|
||||||
for (FacetRequest facetRequest : searchParams.facetRequests) {
|
for (FacetRequest facetRequest : searchParams.facetRequests) {
|
||||||
Aggregator categoryAggregator = facetRequest.createAggregator(isUsingComplements, facetArrays, taxonomyReader);
|
Aggregator categoryAggregator = createAggregator(facetRequest, facetArrays); // nocommit remove! facetRequest.createAggregator(isUsingComplements, facetArrays, taxonomyReader);
|
||||||
|
|
||||||
CategoryListIterator cli = indexingParams.getCategoryListParams(facetRequest.categoryPath).createCategoryListIterator(partition);
|
CategoryListIterator cli = indexingParams.getCategoryListParams(facetRequest.categoryPath).createCategoryListIterator(partition);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package org.apache.lucene.facet.search;
|
package org.apache.lucene.facet.old;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ import org.apache.lucene.search.DocIdSet;
|
||||||
* Document IDs with scores for each, driving facets accumulation. Document
|
* Document IDs with scores for each, driving facets accumulation. Document
|
||||||
* scores are optionally used in the process of facets scoring.
|
* scores are optionally used in the process of facets scoring.
|
||||||
*
|
*
|
||||||
* @see StandardFacetsAccumulator#accumulate(ScoredDocIDs)
|
* @see OldFacetsAccumulator#accumulate(ScoredDocIDs)
|
||||||
* @lucene.experimental
|
* @lucene.experimental
|
||||||
*/
|
*/
|
||||||
public interface ScoredDocIDs {
|
public interface ScoredDocIDs {
|
|
@ -1,4 +1,4 @@
|
||||||
package org.apache.lucene.facet.search;
|
package org.apache.lucene.facet.old;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
@ -1,10 +1,10 @@
|
||||||
package org.apache.lucene.facet.util;
|
package org.apache.lucene.facet.old;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
import org.apache.lucene.facet.search.ScoredDocIDs;
|
import org.apache.lucene.facet.old.ScoredDocIDs;
|
||||||
import org.apache.lucene.facet.search.ScoredDocIDsIterator;
|
import org.apache.lucene.facet.old.ScoredDocIDsIterator;
|
||||||
import org.apache.lucene.index.AtomicReader;
|
import org.apache.lucene.index.AtomicReader;
|
||||||
import org.apache.lucene.index.AtomicReaderContext;
|
import org.apache.lucene.index.AtomicReaderContext;
|
||||||
import org.apache.lucene.index.IndexReader;
|
import org.apache.lucene.index.IndexReader;
|
|
@ -1,4 +1,4 @@
|
||||||
package org.apache.lucene.facet.search;
|
package org.apache.lucene.facet.old;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Old Faceted Search API</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
Old faceted search API, kept until complements, sampling and partitions are migrated to the new API.
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -2,13 +2,13 @@ package org.apache.lucene.facet.partitions;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.apache.lucene.facet.old.OldFacetsAccumulator;
|
||||||
|
import org.apache.lucene.facet.old.ScoredDocIDs;
|
||||||
import org.apache.lucene.facet.search.FacetArrays;
|
import org.apache.lucene.facet.search.FacetArrays;
|
||||||
import org.apache.lucene.facet.search.FacetRequest;
|
import org.apache.lucene.facet.search.FacetRequest;
|
||||||
import org.apache.lucene.facet.search.FacetResult;
|
import org.apache.lucene.facet.search.FacetResult;
|
||||||
import org.apache.lucene.facet.search.FacetResultNode;
|
import org.apache.lucene.facet.search.FacetResultNode;
|
||||||
import org.apache.lucene.facet.search.FacetResultsHandler;
|
import org.apache.lucene.facet.search.FacetResultsHandler;
|
||||||
import org.apache.lucene.facet.search.ScoredDocIDs;
|
|
||||||
import org.apache.lucene.facet.search.StandardFacetsAccumulator;
|
|
||||||
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -103,7 +103,7 @@ public abstract class PartitionsFacetResultsHandler extends FacetResultsHandler
|
||||||
/**
|
/**
|
||||||
* Label results according to settings in {@link FacetRequest}, such as
|
* Label results according to settings in {@link FacetRequest}, such as
|
||||||
* {@link FacetRequest#getNumLabel()}. Usually invoked by
|
* {@link FacetRequest#getNumLabel()}. Usually invoked by
|
||||||
* {@link StandardFacetsAccumulator#accumulate(ScoredDocIDs)}
|
* {@link OldFacetsAccumulator#accumulate(ScoredDocIDs)}
|
||||||
*
|
*
|
||||||
* @param facetResult
|
* @param facetResult
|
||||||
* facet result to be labeled.
|
* facet result to be labeled.
|
||||||
|
|
|
@ -20,12 +20,10 @@ package org.apache.lucene.facet.range;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.lucene.facet.params.FacetIndexingParams;
|
import org.apache.lucene.facet.params.FacetIndexingParams;
|
||||||
import org.apache.lucene.facet.search.Aggregator;
|
|
||||||
import org.apache.lucene.facet.search.FacetArrays;
|
import org.apache.lucene.facet.search.FacetArrays;
|
||||||
import org.apache.lucene.facet.search.FacetRequest;
|
import org.apache.lucene.facet.search.FacetRequest;
|
||||||
import org.apache.lucene.facet.search.FacetsAggregator;
|
import org.apache.lucene.facet.search.FacetsAggregator;
|
||||||
import org.apache.lucene.facet.taxonomy.CategoryPath;
|
import org.apache.lucene.facet.taxonomy.CategoryPath;
|
||||||
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Facet request for dynamic ranges based on a
|
* Facet request for dynamic ranges based on a
|
||||||
|
@ -49,11 +47,6 @@ public class RangeFacetRequest<T extends Range> extends FacetRequest {
|
||||||
this(field, (T[]) ranges.toArray(new Range[ranges.size()]));
|
this(field, (T[]) ranges.toArray(new Range[ranges.size()]));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Aggregator createAggregator(boolean useComplements, FacetArrays arrays, TaxonomyReader taxonomy) {
|
|
||||||
throw new UnsupportedOperationException();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FacetsAggregator createFacetsAggregator(FacetIndexingParams fip) {
|
public FacetsAggregator createFacetsAggregator(FacetIndexingParams fip) {
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -3,9 +3,9 @@ package org.apache.lucene.facet.sampling;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import org.apache.lucene.facet.search.ScoredDocIDs;
|
import org.apache.lucene.facet.old.ScoredDocIDs;
|
||||||
import org.apache.lucene.facet.search.ScoredDocIDsIterator;
|
import org.apache.lucene.facet.old.ScoredDocIDsIterator;
|
||||||
import org.apache.lucene.facet.util.ScoredDocIdsUtils;
|
import org.apache.lucene.facet.old.ScoredDocIdsUtils;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
|
|
@ -5,12 +5,11 @@ import java.util.Arrays;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import org.apache.lucene.facet.old.ScoredDocIDs;
|
||||||
|
import org.apache.lucene.facet.old.ScoredDocIDsIterator;
|
||||||
|
import org.apache.lucene.facet.old.ScoredDocIdsUtils;
|
||||||
import org.apache.lucene.util.PriorityQueue;
|
import org.apache.lucene.util.PriorityQueue;
|
||||||
|
|
||||||
import org.apache.lucene.facet.search.ScoredDocIDs;
|
|
||||||
import org.apache.lucene.facet.search.ScoredDocIDsIterator;
|
|
||||||
import org.apache.lucene.facet.util.ScoredDocIdsUtils;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
* contributor license agreements. See the NOTICE file distributed with
|
* contributor license agreements. See the NOTICE file distributed with
|
||||||
|
|
|
@ -2,9 +2,9 @@ package org.apache.lucene.facet.sampling;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.apache.lucene.facet.old.ScoredDocIDs;
|
||||||
import org.apache.lucene.facet.search.FacetResult;
|
import org.apache.lucene.facet.search.FacetResult;
|
||||||
import org.apache.lucene.facet.search.FacetResultNode;
|
import org.apache.lucene.facet.search.FacetResultNode;
|
||||||
import org.apache.lucene.facet.search.ScoredDocIDs;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
|
|
@ -4,16 +4,14 @@ import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.lucene.facet.old.ScoredDocIDs;
|
||||||
import org.apache.lucene.facet.params.FacetIndexingParams;
|
import org.apache.lucene.facet.params.FacetIndexingParams;
|
||||||
import org.apache.lucene.facet.params.FacetSearchParams;
|
import org.apache.lucene.facet.params.FacetSearchParams;
|
||||||
import org.apache.lucene.facet.search.Aggregator;
|
|
||||||
import org.apache.lucene.facet.search.FacetArrays;
|
import org.apache.lucene.facet.search.FacetArrays;
|
||||||
import org.apache.lucene.facet.search.FacetRequest;
|
import org.apache.lucene.facet.search.FacetRequest;
|
||||||
import org.apache.lucene.facet.search.FacetResult;
|
import org.apache.lucene.facet.search.FacetResult;
|
||||||
import org.apache.lucene.facet.search.FacetResultNode;
|
import org.apache.lucene.facet.search.FacetResultNode;
|
||||||
import org.apache.lucene.facet.search.FacetsAggregator;
|
import org.apache.lucene.facet.search.FacetsAggregator;
|
||||||
import org.apache.lucene.facet.search.ScoredDocIDs;
|
|
||||||
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
@ -198,15 +196,9 @@ public abstract class Sampler {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Wrapping a facet request for over sampling. */
|
||||||
* Wrapping a facet request for over sampling.
|
public static class OverSampledFacetRequest extends FacetRequest {
|
||||||
* Implementation detail: even if the original request is a count request, no
|
public final FacetRequest orig;
|
||||||
* statistics will be computed for it as the wrapping is not a count request.
|
|
||||||
* This is ok, as the sampling accumulator is later computing the statistics
|
|
||||||
* over the original requests.
|
|
||||||
*/
|
|
||||||
private static class OverSampledFacetRequest extends FacetRequest {
|
|
||||||
final FacetRequest orig;
|
|
||||||
public OverSampledFacetRequest(FacetRequest orig, int num) {
|
public OverSampledFacetRequest(FacetRequest orig, int num) {
|
||||||
super(orig.categoryPath, num);
|
super(orig.categoryPath, num);
|
||||||
this.orig = orig;
|
this.orig = orig;
|
||||||
|
@ -221,12 +213,6 @@ public abstract class Sampler {
|
||||||
return orig.createFacetsAggregator(fip);
|
return orig.createFacetsAggregator(fip);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Aggregator createAggregator(boolean useComplements, FacetArrays arrays, TaxonomyReader taxonomy)
|
|
||||||
throws IOException {
|
|
||||||
return orig.createAggregator(useComplements, arrays, taxonomy);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FacetArraysSource getFacetArraysSource() {
|
public FacetArraysSource getFacetArraysSource() {
|
||||||
return orig.getFacetArraysSource();
|
return orig.getFacetArraysSource();
|
||||||
|
|
|
@ -4,14 +4,14 @@ import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.lucene.facet.old.OldFacetsAccumulator;
|
||||||
|
import org.apache.lucene.facet.old.ScoredDocIDs;
|
||||||
import org.apache.lucene.facet.params.FacetSearchParams;
|
import org.apache.lucene.facet.params.FacetSearchParams;
|
||||||
import org.apache.lucene.facet.partitions.PartitionsFacetResultsHandler;
|
import org.apache.lucene.facet.partitions.PartitionsFacetResultsHandler;
|
||||||
import org.apache.lucene.facet.sampling.Sampler.SampleResult;
|
import org.apache.lucene.facet.sampling.Sampler.SampleResult;
|
||||||
import org.apache.lucene.facet.search.FacetArrays;
|
import org.apache.lucene.facet.search.FacetArrays;
|
||||||
import org.apache.lucene.facet.search.FacetResult;
|
import org.apache.lucene.facet.search.FacetResult;
|
||||||
import org.apache.lucene.facet.search.FacetsAccumulator;
|
import org.apache.lucene.facet.search.FacetsAccumulator;
|
||||||
import org.apache.lucene.facet.search.ScoredDocIDs;
|
|
||||||
import org.apache.lucene.facet.search.StandardFacetsAccumulator;
|
|
||||||
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
||||||
import org.apache.lucene.index.IndexReader;
|
import org.apache.lucene.index.IndexReader;
|
||||||
|
|
||||||
|
@ -38,10 +38,10 @@ import org.apache.lucene.index.IndexReader;
|
||||||
* Note two major differences between this class and {@link SamplingWrapper}:
|
* Note two major differences between this class and {@link SamplingWrapper}:
|
||||||
* <ol>
|
* <ol>
|
||||||
* <li>Latter can wrap any other {@link FacetsAccumulator} while this class
|
* <li>Latter can wrap any other {@link FacetsAccumulator} while this class
|
||||||
* directly extends {@link StandardFacetsAccumulator}.</li>
|
* directly extends {@link OldFacetsAccumulator}.</li>
|
||||||
* <li>This class can effectively apply sampling on the complement set of
|
* <li>This class can effectively apply sampling on the complement set of
|
||||||
* matching document, thereby working efficiently with the complement
|
* matching document, thereby working efficiently with the complement
|
||||||
* optimization - see {@link StandardFacetsAccumulator#getComplementThreshold()}
|
* optimization - see {@link OldFacetsAccumulator#getComplementThreshold()}
|
||||||
* .</li>
|
* .</li>
|
||||||
* </ol>
|
* </ol>
|
||||||
* <p>
|
* <p>
|
||||||
|
@ -52,7 +52,7 @@ import org.apache.lucene.index.IndexReader;
|
||||||
* @see Sampler
|
* @see Sampler
|
||||||
* @lucene.experimental
|
* @lucene.experimental
|
||||||
*/
|
*/
|
||||||
public class SamplingAccumulator extends StandardFacetsAccumulator {
|
public class SamplingAccumulator extends OldFacetsAccumulator {
|
||||||
|
|
||||||
private double samplingRatio = -1d;
|
private double samplingRatio = -1d;
|
||||||
private final Sampler sampler;
|
private final Sampler sampler;
|
||||||
|
|
|
@ -32,19 +32,19 @@ public class SamplingParams {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default ratio between size of sample to original size of document set.
|
* Default ratio between size of sample to original size of document set.
|
||||||
* @see Sampler#getSampleSet(org.apache.lucene.facet.search.ScoredDocIDs)
|
* @see Sampler#getSampleSet(org.apache.lucene.facet.old.ScoredDocIDs)
|
||||||
*/
|
*/
|
||||||
public static final double DEFAULT_SAMPLE_RATIO = 0.01;
|
public static final double DEFAULT_SAMPLE_RATIO = 0.01;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default maximum size of sample.
|
* Default maximum size of sample.
|
||||||
* @see Sampler#getSampleSet(org.apache.lucene.facet.search.ScoredDocIDs)
|
* @see Sampler#getSampleSet(org.apache.lucene.facet.old.ScoredDocIDs)
|
||||||
*/
|
*/
|
||||||
public static final int DEFAULT_MAX_SAMPLE_SIZE = 10000;
|
public static final int DEFAULT_MAX_SAMPLE_SIZE = 10000;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default minimum size of sample.
|
* Default minimum size of sample.
|
||||||
* @see Sampler#getSampleSet(org.apache.lucene.facet.search.ScoredDocIDs)
|
* @see Sampler#getSampleSet(org.apache.lucene.facet.old.ScoredDocIDs)
|
||||||
*/
|
*/
|
||||||
public static final int DEFAULT_MIN_SAMPLE_SIZE = 100;
|
public static final int DEFAULT_MIN_SAMPLE_SIZE = 100;
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ public class SamplingParams {
|
||||||
/**
|
/**
|
||||||
* Return the maxSampleSize.
|
* Return the maxSampleSize.
|
||||||
* In no case should the resulting sample size exceed this value.
|
* In no case should the resulting sample size exceed this value.
|
||||||
* @see Sampler#getSampleSet(org.apache.lucene.facet.search.ScoredDocIDs)
|
* @see Sampler#getSampleSet(org.apache.lucene.facet.old.ScoredDocIDs)
|
||||||
*/
|
*/
|
||||||
public final int getMaxSampleSize() {
|
public final int getMaxSampleSize() {
|
||||||
return maxSampleSize;
|
return maxSampleSize;
|
||||||
|
@ -74,7 +74,7 @@ public class SamplingParams {
|
||||||
/**
|
/**
|
||||||
* Return the minSampleSize.
|
* Return the minSampleSize.
|
||||||
* In no case should the resulting sample size be smaller than this value.
|
* In no case should the resulting sample size be smaller than this value.
|
||||||
* @see Sampler#getSampleSet(org.apache.lucene.facet.search.ScoredDocIDs)
|
* @see Sampler#getSampleSet(org.apache.lucene.facet.old.ScoredDocIDs)
|
||||||
*/
|
*/
|
||||||
public final int getMinSampleSize() {
|
public final int getMinSampleSize() {
|
||||||
return minSampleSize;
|
return minSampleSize;
|
||||||
|
@ -82,7 +82,7 @@ public class SamplingParams {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the sampleRatio
|
* @return the sampleRatio
|
||||||
* @see Sampler#getSampleSet(org.apache.lucene.facet.search.ScoredDocIDs)
|
* @see Sampler#getSampleSet(org.apache.lucene.facet.old.ScoredDocIDs)
|
||||||
*/
|
*/
|
||||||
public final double getSampleRatio() {
|
public final double getSampleRatio() {
|
||||||
return sampleRatio;
|
return sampleRatio;
|
||||||
|
|
|
@ -4,12 +4,12 @@ import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.lucene.facet.old.OldFacetsAccumulator;
|
||||||
|
import org.apache.lucene.facet.old.ScoredDocIDs;
|
||||||
import org.apache.lucene.facet.params.FacetSearchParams;
|
import org.apache.lucene.facet.params.FacetSearchParams;
|
||||||
import org.apache.lucene.facet.partitions.PartitionsFacetResultsHandler;
|
import org.apache.lucene.facet.partitions.PartitionsFacetResultsHandler;
|
||||||
import org.apache.lucene.facet.sampling.Sampler.SampleResult;
|
import org.apache.lucene.facet.sampling.Sampler.SampleResult;
|
||||||
import org.apache.lucene.facet.search.FacetResult;
|
import org.apache.lucene.facet.search.FacetResult;
|
||||||
import org.apache.lucene.facet.search.ScoredDocIDs;
|
|
||||||
import org.apache.lucene.facet.search.StandardFacetsAccumulator;
|
|
||||||
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -38,12 +38,12 @@ import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
||||||
*
|
*
|
||||||
* @lucene.experimental
|
* @lucene.experimental
|
||||||
*/
|
*/
|
||||||
public class SamplingWrapper extends StandardFacetsAccumulator {
|
public class SamplingWrapper extends OldFacetsAccumulator {
|
||||||
|
|
||||||
private StandardFacetsAccumulator delegee;
|
private OldFacetsAccumulator delegee;
|
||||||
private Sampler sampler;
|
private Sampler sampler;
|
||||||
|
|
||||||
public SamplingWrapper(StandardFacetsAccumulator delegee, Sampler sampler) {
|
public SamplingWrapper(OldFacetsAccumulator delegee, Sampler sampler) {
|
||||||
super(delegee.searchParams, delegee.indexReader, delegee.taxonomyReader);
|
super(delegee.searchParams, delegee.indexReader, delegee.taxonomyReader);
|
||||||
this.delegee = delegee;
|
this.delegee = delegee;
|
||||||
this.sampler = sampler;
|
this.sampler = sampler;
|
||||||
|
|
|
@ -2,11 +2,11 @@ package org.apache.lucene.facet.sampling;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.apache.lucene.facet.old.ScoredDocIDs;
|
||||||
|
import org.apache.lucene.facet.old.ScoredDocIDsIterator;
|
||||||
import org.apache.lucene.facet.params.FacetSearchParams;
|
import org.apache.lucene.facet.params.FacetSearchParams;
|
||||||
import org.apache.lucene.facet.search.DrillDownQuery;
|
import org.apache.lucene.facet.search.DrillDownQuery;
|
||||||
import org.apache.lucene.facet.search.FacetResultNode;
|
import org.apache.lucene.facet.search.FacetResultNode;
|
||||||
import org.apache.lucene.facet.search.ScoredDocIDs;
|
|
||||||
import org.apache.lucene.facet.search.ScoredDocIDsIterator;
|
|
||||||
import org.apache.lucene.facet.taxonomy.CategoryPath;
|
import org.apache.lucene.facet.taxonomy.CategoryPath;
|
||||||
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
||||||
import org.apache.lucene.index.DocsEnum;
|
import org.apache.lucene.index.DocsEnum;
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
package org.apache.lucene.facet.search;
|
package org.apache.lucene.facet.search;
|
||||||
|
|
||||||
import org.apache.lucene.facet.complements.ComplementCountingAggregator;
|
|
||||||
import org.apache.lucene.facet.params.FacetIndexingParams;
|
import org.apache.lucene.facet.params.FacetIndexingParams;
|
||||||
import org.apache.lucene.facet.taxonomy.CategoryPath;
|
import org.apache.lucene.facet.taxonomy.CategoryPath;
|
||||||
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
@ -33,17 +31,6 @@ public class CountFacetRequest extends FacetRequest {
|
||||||
super(path, num);
|
super(path, num);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO nuke Aggregator and move this logic to StandardFacetsAccumulator -- it should only be used for counting
|
|
||||||
@Override
|
|
||||||
public Aggregator createAggregator(boolean useComplements, FacetArrays arrays, TaxonomyReader taxonomy) {
|
|
||||||
// we rely on that, if needed, result is cleared by arrays!
|
|
||||||
int[] a = arrays.getIntArray();
|
|
||||||
if (useComplements) {
|
|
||||||
return new ComplementCountingAggregator(a);
|
|
||||||
}
|
|
||||||
return new CountingAggregator(a);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FacetsAggregator createFacetsAggregator(FacetIndexingParams fip) {
|
public FacetsAggregator createFacetsAggregator(FacetIndexingParams fip) {
|
||||||
return CountingFacetsAggregator.create(fip.getCategoryListParams(categoryPath));
|
return CountingFacetsAggregator.create(fip.getCategoryListParams(categoryPath));
|
||||||
|
|
|
@ -1,12 +1,9 @@
|
||||||
package org.apache.lucene.facet.search;
|
package org.apache.lucene.facet.search;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
import org.apache.lucene.facet.params.CategoryListParams.OrdinalPolicy;
|
import org.apache.lucene.facet.params.CategoryListParams.OrdinalPolicy;
|
||||||
import org.apache.lucene.facet.params.FacetIndexingParams;
|
import org.apache.lucene.facet.params.FacetIndexingParams;
|
||||||
import org.apache.lucene.facet.range.RangeFacetRequest;
|
import org.apache.lucene.facet.range.RangeFacetRequest;
|
||||||
import org.apache.lucene.facet.taxonomy.CategoryPath;
|
import org.apache.lucene.facet.taxonomy.CategoryPath;
|
||||||
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
@ -121,26 +118,6 @@ public abstract class FacetRequest {
|
||||||
hashCode = categoryPath.hashCode() ^ this.numResults;
|
hashCode = categoryPath.hashCode() ^ this.numResults;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Create an aggregator for this facet request. Aggregator action depends on
|
|
||||||
* request definition. For a count request, it will usually increment the
|
|
||||||
* count for that facet.
|
|
||||||
*
|
|
||||||
* @param useComplements
|
|
||||||
* whether the complements optimization is being used for current
|
|
||||||
* computation.
|
|
||||||
* @param arrays
|
|
||||||
* provider for facet arrays in use for current computation.
|
|
||||||
* @param taxonomy
|
|
||||||
* reader of taxonomy in effect.
|
|
||||||
* @throws IOException If there is a low-level I/O error.
|
|
||||||
*/
|
|
||||||
public Aggregator createAggregator(boolean useComplements, FacetArrays arrays, TaxonomyReader taxonomy)
|
|
||||||
throws IOException {
|
|
||||||
throw new UnsupportedOperationException("this FacetRequest does not support this type of Aggregator anymore; " +
|
|
||||||
"you should override FacetsAccumulator to return the proper FacetsAggregator");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the {@link FacetsAggregator} which can aggregate the categories of
|
* Returns the {@link FacetsAggregator} which can aggregate the categories of
|
||||||
* this facet request. The aggregator is expected to aggregate category values
|
* this facet request. The aggregator is expected to aggregate category values
|
||||||
|
|
|
@ -4,6 +4,7 @@ import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.lucene.facet.old.OldFacetsAccumulator;
|
||||||
import org.apache.lucene.facet.params.FacetIndexingParams;
|
import org.apache.lucene.facet.params.FacetIndexingParams;
|
||||||
import org.apache.lucene.facet.params.FacetSearchParams;
|
import org.apache.lucene.facet.params.FacetSearchParams;
|
||||||
import org.apache.lucene.facet.range.RangeAccumulator;
|
import org.apache.lucene.facet.range.RangeAccumulator;
|
||||||
|
@ -72,7 +73,7 @@ public abstract class FacetsAccumulator {
|
||||||
public static FacetsAccumulator create(FacetSearchParams fsp, IndexReader indexReader, TaxonomyReader taxoReader,
|
public static FacetsAccumulator create(FacetSearchParams fsp, IndexReader indexReader, TaxonomyReader taxoReader,
|
||||||
FacetArrays arrays) {
|
FacetArrays arrays) {
|
||||||
if (fsp.indexingParams.getPartitionSize() != Integer.MAX_VALUE) {
|
if (fsp.indexingParams.getPartitionSize() != Integer.MAX_VALUE) {
|
||||||
return new StandardFacetsAccumulator(fsp, indexReader, taxoReader, arrays);
|
return new OldFacetsAccumulator(fsp, indexReader, taxoReader, arrays);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<FacetRequest> rangeRequests = new ArrayList<FacetRequest>();
|
List<FacetRequest> rangeRequests = new ArrayList<FacetRequest>();
|
||||||
|
|
|
@ -2,7 +2,6 @@ package org.apache.lucene.facet.search;
|
||||||
|
|
||||||
import org.apache.lucene.facet.params.FacetIndexingParams;
|
import org.apache.lucene.facet.params.FacetIndexingParams;
|
||||||
import org.apache.lucene.facet.taxonomy.CategoryPath;
|
import org.apache.lucene.facet.taxonomy.CategoryPath;
|
||||||
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
@ -39,12 +38,6 @@ public class SumScoreFacetRequest extends FacetRequest {
|
||||||
return new SumScoreFacetsAggregator();
|
return new SumScoreFacetsAggregator();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Aggregator createAggregator(boolean useComplements, FacetArrays arrays, TaxonomyReader taxonomy) {
|
|
||||||
assert !useComplements : "complements are not supported by this FacetRequest";
|
|
||||||
return new ScoringAggregator(arrays.getFloatArray());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double getValueOf(FacetArrays arrays, int ordinal) {
|
public double getValueOf(FacetArrays arrays, int ordinal) {
|
||||||
return arrays.getFloatArray()[ordinal];
|
return arrays.getFloatArray()[ordinal];
|
||||||
|
|
|
@ -4,13 +4,13 @@ import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.lucene.facet.FacetTestBase;
|
import org.apache.lucene.facet.FacetTestBase;
|
||||||
|
import org.apache.lucene.facet.old.OldFacetsAccumulator;
|
||||||
import org.apache.lucene.facet.params.FacetIndexingParams;
|
import org.apache.lucene.facet.params.FacetIndexingParams;
|
||||||
import org.apache.lucene.facet.params.FacetSearchParams;
|
import org.apache.lucene.facet.params.FacetSearchParams;
|
||||||
import org.apache.lucene.facet.search.CountFacetRequest;
|
import org.apache.lucene.facet.search.CountFacetRequest;
|
||||||
import org.apache.lucene.facet.search.FacetResult;
|
import org.apache.lucene.facet.search.FacetResult;
|
||||||
import org.apache.lucene.facet.search.FacetResultNode;
|
import org.apache.lucene.facet.search.FacetResultNode;
|
||||||
import org.apache.lucene.facet.search.FacetsCollector;
|
import org.apache.lucene.facet.search.FacetsCollector;
|
||||||
import org.apache.lucene.facet.search.StandardFacetsAccumulator;
|
|
||||||
import org.apache.lucene.facet.taxonomy.CategoryPath;
|
import org.apache.lucene.facet.taxonomy.CategoryPath;
|
||||||
import org.apache.lucene.index.IndexReader;
|
import org.apache.lucene.index.IndexReader;
|
||||||
import org.apache.lucene.index.MultiReader;
|
import org.apache.lucene.index.MultiReader;
|
||||||
|
@ -112,8 +112,8 @@ public class TestFacetsAccumulatorWithComplement extends FacetTestBase {
|
||||||
/** compute facets with certain facet requests and docs */
|
/** compute facets with certain facet requests and docs */
|
||||||
private List<FacetResult> findFacets(boolean withComplement) throws IOException {
|
private List<FacetResult> findFacets(boolean withComplement) throws IOException {
|
||||||
FacetSearchParams fsp = new FacetSearchParams(fip, new CountFacetRequest(new CategoryPath("root","a"), 10));
|
FacetSearchParams fsp = new FacetSearchParams(fip, new CountFacetRequest(new CategoryPath("root","a"), 10));
|
||||||
StandardFacetsAccumulator sfa = new StandardFacetsAccumulator(fsp, indexReader, taxoReader);
|
OldFacetsAccumulator sfa = new OldFacetsAccumulator(fsp, indexReader, taxoReader);
|
||||||
sfa.setComplementThreshold(withComplement ? StandardFacetsAccumulator.FORCE_COMPLEMENT : StandardFacetsAccumulator.DISABLE_COMPLEMENT);
|
sfa.setComplementThreshold(withComplement ? OldFacetsAccumulator.FORCE_COMPLEMENT : OldFacetsAccumulator.DISABLE_COMPLEMENT);
|
||||||
FacetsCollector fc = FacetsCollector.create(sfa);
|
FacetsCollector fc = FacetsCollector.create(sfa);
|
||||||
searcher.search(new MatchAllDocsQuery(), fc);
|
searcher.search(new MatchAllDocsQuery(), fc);
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
package org.apache.lucene.facet.search;
|
package org.apache.lucene.facet.old;
|
||||||
|
|
||||||
import org.apache.lucene.index.IndexReader;
|
|
||||||
import org.apache.lucene.util.LuceneTestCase.Slow;
|
|
||||||
|
|
||||||
import org.apache.lucene.facet.params.FacetSearchParams;
|
import org.apache.lucene.facet.params.FacetSearchParams;
|
||||||
import org.apache.lucene.facet.sampling.BaseSampleTestTopK;
|
import org.apache.lucene.facet.sampling.BaseSampleTestTopK;
|
||||||
import org.apache.lucene.facet.sampling.Sampler;
|
import org.apache.lucene.facet.sampling.Sampler;
|
||||||
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
||||||
|
import org.apache.lucene.index.IndexReader;
|
||||||
|
import org.apache.lucene.util.LuceneTestCase.Slow;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
@ -29,7 +28,7 @@ import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
||||||
public class AdaptiveAccumulatorTest extends BaseSampleTestTopK {
|
public class AdaptiveAccumulatorTest extends BaseSampleTestTopK {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected StandardFacetsAccumulator getSamplingAccumulator(Sampler sampler, TaxonomyReader taxoReader,
|
protected OldFacetsAccumulator getSamplingAccumulator(Sampler sampler, TaxonomyReader taxoReader,
|
||||||
IndexReader indexReader, FacetSearchParams searchParams) {
|
IndexReader indexReader, FacetSearchParams searchParams) {
|
||||||
AdaptiveFacetsAccumulator res = new AdaptiveFacetsAccumulator(searchParams, indexReader, taxoReader);
|
AdaptiveFacetsAccumulator res = new AdaptiveFacetsAccumulator(searchParams, indexReader, taxoReader);
|
||||||
res.setSampler(sampler);
|
res.setSampler(sampler);
|
|
@ -1,4 +1,4 @@
|
||||||
package org.apache.lucene.facet.util;
|
package org.apache.lucene.facet.old;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
@ -10,8 +10,6 @@ import org.apache.lucene.document.Field;
|
||||||
import org.apache.lucene.document.FieldType;
|
import org.apache.lucene.document.FieldType;
|
||||||
import org.apache.lucene.document.StringField;
|
import org.apache.lucene.document.StringField;
|
||||||
import org.apache.lucene.facet.FacetTestCase;
|
import org.apache.lucene.facet.FacetTestCase;
|
||||||
import org.apache.lucene.facet.search.ScoredDocIDs;
|
|
||||||
import org.apache.lucene.facet.search.ScoredDocIDsIterator;
|
|
||||||
import org.apache.lucene.index.DirectoryReader;
|
import org.apache.lucene.index.DirectoryReader;
|
||||||
import org.apache.lucene.index.IndexReader;
|
import org.apache.lucene.index.IndexReader;
|
||||||
import org.apache.lucene.index.RandomIndexWriter;
|
import org.apache.lucene.index.RandomIndexWriter;
|
|
@ -3,18 +3,14 @@ package org.apache.lucene.facet.sampling;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import org.apache.lucene.facet.old.OldFacetsAccumulator;
|
||||||
import org.apache.lucene.facet.params.FacetIndexingParams;
|
import org.apache.lucene.facet.params.FacetIndexingParams;
|
||||||
import org.apache.lucene.facet.params.FacetSearchParams;
|
import org.apache.lucene.facet.params.FacetSearchParams;
|
||||||
import org.apache.lucene.facet.sampling.RandomSampler;
|
|
||||||
import org.apache.lucene.facet.sampling.RepeatableSampler;
|
|
||||||
import org.apache.lucene.facet.sampling.Sampler;
|
|
||||||
import org.apache.lucene.facet.sampling.SamplingParams;
|
|
||||||
import org.apache.lucene.facet.search.BaseTestTopK;
|
import org.apache.lucene.facet.search.BaseTestTopK;
|
||||||
import org.apache.lucene.facet.search.FacetRequest;
|
import org.apache.lucene.facet.search.FacetRequest;
|
||||||
|
import org.apache.lucene.facet.search.FacetRequest.ResultMode;
|
||||||
import org.apache.lucene.facet.search.FacetResult;
|
import org.apache.lucene.facet.search.FacetResult;
|
||||||
import org.apache.lucene.facet.search.FacetsCollector;
|
import org.apache.lucene.facet.search.FacetsCollector;
|
||||||
import org.apache.lucene.facet.search.StandardFacetsAccumulator;
|
|
||||||
import org.apache.lucene.facet.search.FacetRequest.ResultMode;
|
|
||||||
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
||||||
import org.apache.lucene.index.IndexReader;
|
import org.apache.lucene.index.IndexReader;
|
||||||
import org.apache.lucene.index.Term;
|
import org.apache.lucene.index.Term;
|
||||||
|
@ -60,7 +56,7 @@ public abstract class BaseSampleTestTopK extends BaseTestTopK {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract StandardFacetsAccumulator getSamplingAccumulator(Sampler sampler, TaxonomyReader taxoReader,
|
protected abstract OldFacetsAccumulator getSamplingAccumulator(Sampler sampler, TaxonomyReader taxoReader,
|
||||||
IndexReader indexReader, FacetSearchParams searchParams);
|
IndexReader indexReader, FacetSearchParams searchParams);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -123,8 +119,8 @@ public abstract class BaseSampleTestTopK extends BaseTestTopK {
|
||||||
|
|
||||||
private FacetsCollector samplingCollector(final boolean complement, final Sampler sampler,
|
private FacetsCollector samplingCollector(final boolean complement, final Sampler sampler,
|
||||||
FacetSearchParams samplingSearchParams) {
|
FacetSearchParams samplingSearchParams) {
|
||||||
StandardFacetsAccumulator sfa = getSamplingAccumulator(sampler, taxoReader, indexReader, samplingSearchParams);
|
OldFacetsAccumulator sfa = getSamplingAccumulator(sampler, taxoReader, indexReader, samplingSearchParams);
|
||||||
sfa.setComplementThreshold(complement ? StandardFacetsAccumulator.FORCE_COMPLEMENT : StandardFacetsAccumulator.DISABLE_COMPLEMENT);
|
sfa.setComplementThreshold(complement ? OldFacetsAccumulator.FORCE_COMPLEMENT : OldFacetsAccumulator.DISABLE_COMPLEMENT);
|
||||||
return FacetsCollector.create(sfa);
|
return FacetsCollector.create(sfa);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,19 +6,15 @@ import java.util.Collections;
|
||||||
import org.apache.lucene.document.Document;
|
import org.apache.lucene.document.Document;
|
||||||
import org.apache.lucene.facet.FacetTestCase;
|
import org.apache.lucene.facet.FacetTestCase;
|
||||||
import org.apache.lucene.facet.index.FacetFields;
|
import org.apache.lucene.facet.index.FacetFields;
|
||||||
|
import org.apache.lucene.facet.old.OldFacetsAccumulator;
|
||||||
import org.apache.lucene.facet.params.FacetIndexingParams;
|
import org.apache.lucene.facet.params.FacetIndexingParams;
|
||||||
import org.apache.lucene.facet.params.FacetSearchParams;
|
import org.apache.lucene.facet.params.FacetSearchParams;
|
||||||
import org.apache.lucene.facet.sampling.RandomSampler;
|
|
||||||
import org.apache.lucene.facet.sampling.Sampler;
|
|
||||||
import org.apache.lucene.facet.sampling.SamplingAccumulator;
|
|
||||||
import org.apache.lucene.facet.sampling.SamplingParams;
|
|
||||||
import org.apache.lucene.facet.search.CountFacetRequest;
|
import org.apache.lucene.facet.search.CountFacetRequest;
|
||||||
import org.apache.lucene.facet.search.FacetRequest;
|
import org.apache.lucene.facet.search.FacetRequest;
|
||||||
|
import org.apache.lucene.facet.search.FacetRequest.ResultMode;
|
||||||
import org.apache.lucene.facet.search.FacetResult;
|
import org.apache.lucene.facet.search.FacetResult;
|
||||||
import org.apache.lucene.facet.search.FacetResultNode;
|
import org.apache.lucene.facet.search.FacetResultNode;
|
||||||
import org.apache.lucene.facet.search.FacetsCollector;
|
import org.apache.lucene.facet.search.FacetsCollector;
|
||||||
import org.apache.lucene.facet.search.StandardFacetsAccumulator;
|
|
||||||
import org.apache.lucene.facet.search.FacetRequest.ResultMode;
|
|
||||||
import org.apache.lucene.facet.taxonomy.CategoryPath;
|
import org.apache.lucene.facet.taxonomy.CategoryPath;
|
||||||
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
||||||
import org.apache.lucene.facet.taxonomy.TaxonomyWriter;
|
import org.apache.lucene.facet.taxonomy.TaxonomyWriter;
|
||||||
|
@ -116,7 +112,7 @@ public class OversampleWithDepthTest extends FacetTestCase {
|
||||||
final SamplingParams params) throws IOException {
|
final SamplingParams params) throws IOException {
|
||||||
// a FacetsCollector with a sampling accumulator
|
// a FacetsCollector with a sampling accumulator
|
||||||
Sampler sampler = new RandomSampler(params, random());
|
Sampler sampler = new RandomSampler(params, random());
|
||||||
StandardFacetsAccumulator sfa = new SamplingAccumulator(sampler, fsp, r, tr);
|
OldFacetsAccumulator sfa = new SamplingAccumulator(sampler, fsp, r, tr);
|
||||||
FacetsCollector fcWithSampling = FacetsCollector.create(sfa);
|
FacetsCollector fcWithSampling = FacetsCollector.create(sfa);
|
||||||
|
|
||||||
IndexSearcher s = newSearcher(r);
|
IndexSearcher s = newSearcher(r);
|
||||||
|
|
|
@ -4,12 +4,12 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.lucene.facet.FacetTestBase;
|
import org.apache.lucene.facet.FacetTestBase;
|
||||||
|
import org.apache.lucene.facet.old.OldFacetsAccumulator;
|
||||||
import org.apache.lucene.facet.params.FacetIndexingParams;
|
import org.apache.lucene.facet.params.FacetIndexingParams;
|
||||||
import org.apache.lucene.facet.params.FacetSearchParams;
|
import org.apache.lucene.facet.params.FacetSearchParams;
|
||||||
import org.apache.lucene.facet.search.CountFacetRequest;
|
import org.apache.lucene.facet.search.CountFacetRequest;
|
||||||
import org.apache.lucene.facet.search.FacetResultNode;
|
import org.apache.lucene.facet.search.FacetResultNode;
|
||||||
import org.apache.lucene.facet.search.FacetsCollector;
|
import org.apache.lucene.facet.search.FacetsCollector;
|
||||||
import org.apache.lucene.facet.search.StandardFacetsAccumulator;
|
|
||||||
import org.apache.lucene.facet.taxonomy.CategoryPath;
|
import org.apache.lucene.facet.taxonomy.CategoryPath;
|
||||||
import org.apache.lucene.search.MatchAllDocsQuery;
|
import org.apache.lucene.search.MatchAllDocsQuery;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
|
@ -99,7 +99,7 @@ public class SamplerTest extends FacetTestBase {
|
||||||
|
|
||||||
// Make sure no complements are in action
|
// Make sure no complements are in action
|
||||||
accumulator
|
accumulator
|
||||||
.setComplementThreshold(StandardFacetsAccumulator.DISABLE_COMPLEMENT);
|
.setComplementThreshold(OldFacetsAccumulator.DISABLE_COMPLEMENT);
|
||||||
|
|
||||||
FacetsCollector fc = FacetsCollector.create(accumulator);
|
FacetsCollector fc = FacetsCollector.create(accumulator);
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
package org.apache.lucene.facet.sampling;
|
package org.apache.lucene.facet.sampling;
|
||||||
|
|
||||||
|
import org.apache.lucene.facet.old.OldFacetsAccumulator;
|
||||||
import org.apache.lucene.facet.params.FacetSearchParams;
|
import org.apache.lucene.facet.params.FacetSearchParams;
|
||||||
import org.apache.lucene.facet.sampling.Sampler;
|
|
||||||
import org.apache.lucene.facet.sampling.SamplingAccumulator;
|
|
||||||
import org.apache.lucene.facet.search.StandardFacetsAccumulator;
|
|
||||||
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
||||||
import org.apache.lucene.index.IndexReader;
|
import org.apache.lucene.index.IndexReader;
|
||||||
import org.apache.lucene.util.LuceneTestCase.Slow;
|
import org.apache.lucene.util.LuceneTestCase.Slow;
|
||||||
|
@ -29,7 +27,7 @@ import org.apache.lucene.util.LuceneTestCase.Slow;
|
||||||
public class SamplingAccumulatorTest extends BaseSampleTestTopK {
|
public class SamplingAccumulatorTest extends BaseSampleTestTopK {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected StandardFacetsAccumulator getSamplingAccumulator(Sampler sampler, TaxonomyReader taxoReader,
|
protected OldFacetsAccumulator getSamplingAccumulator(Sampler sampler, TaxonomyReader taxoReader,
|
||||||
IndexReader indexReader, FacetSearchParams searchParams) {
|
IndexReader indexReader, FacetSearchParams searchParams) {
|
||||||
return new SamplingAccumulator(sampler, searchParams, indexReader, taxoReader);
|
return new SamplingAccumulator(sampler, searchParams, indexReader, taxoReader);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,11 @@
|
||||||
package org.apache.lucene.facet.sampling;
|
package org.apache.lucene.facet.sampling;
|
||||||
|
|
||||||
|
import org.apache.lucene.facet.old.OldFacetsAccumulator;
|
||||||
|
import org.apache.lucene.facet.params.FacetSearchParams;
|
||||||
|
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
||||||
import org.apache.lucene.index.IndexReader;
|
import org.apache.lucene.index.IndexReader;
|
||||||
import org.apache.lucene.util.LuceneTestCase.Slow;
|
import org.apache.lucene.util.LuceneTestCase.Slow;
|
||||||
|
|
||||||
import org.apache.lucene.facet.params.FacetSearchParams;
|
|
||||||
import org.apache.lucene.facet.sampling.Sampler;
|
|
||||||
import org.apache.lucene.facet.sampling.SamplingWrapper;
|
|
||||||
import org.apache.lucene.facet.search.StandardFacetsAccumulator;
|
|
||||||
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
* contributor license agreements. See the NOTICE file distributed with
|
* contributor license agreements. See the NOTICE file distributed with
|
||||||
|
@ -30,9 +27,9 @@ import org.apache.lucene.facet.taxonomy.TaxonomyReader;
|
||||||
public class SamplingWrapperTest extends BaseSampleTestTopK {
|
public class SamplingWrapperTest extends BaseSampleTestTopK {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected StandardFacetsAccumulator getSamplingAccumulator(Sampler sampler, TaxonomyReader taxoReader,
|
protected OldFacetsAccumulator getSamplingAccumulator(Sampler sampler, TaxonomyReader taxoReader,
|
||||||
IndexReader indexReader, FacetSearchParams searchParams) {
|
IndexReader indexReader, FacetSearchParams searchParams) {
|
||||||
return new SamplingWrapper(new StandardFacetsAccumulator(searchParams, indexReader, taxoReader), sampler);
|
return new SamplingWrapper(new OldFacetsAccumulator(searchParams, indexReader, taxoReader), sampler);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,8 @@ import org.apache.lucene.document.Field.Store;
|
||||||
import org.apache.lucene.document.StringField;
|
import org.apache.lucene.document.StringField;
|
||||||
import org.apache.lucene.facet.FacetTestCase;
|
import org.apache.lucene.facet.FacetTestCase;
|
||||||
import org.apache.lucene.facet.index.FacetFields;
|
import org.apache.lucene.facet.index.FacetFields;
|
||||||
|
import org.apache.lucene.facet.old.AdaptiveFacetsAccumulator;
|
||||||
|
import org.apache.lucene.facet.old.OldFacetsAccumulator;
|
||||||
import org.apache.lucene.facet.params.CategoryListParams;
|
import org.apache.lucene.facet.params.CategoryListParams;
|
||||||
import org.apache.lucene.facet.params.FacetIndexingParams;
|
import org.apache.lucene.facet.params.FacetIndexingParams;
|
||||||
import org.apache.lucene.facet.params.FacetSearchParams;
|
import org.apache.lucene.facet.params.FacetSearchParams;
|
||||||
|
@ -218,7 +220,7 @@ public class TestFacetsCollector extends FacetTestCase {
|
||||||
|
|
||||||
FacetSearchParams fsp = new FacetSearchParams(new CountFacetRequest(CategoryPath.EMPTY, 10));
|
FacetSearchParams fsp = new FacetSearchParams(new CountFacetRequest(CategoryPath.EMPTY, 10));
|
||||||
|
|
||||||
final TaxonomyFacetsAccumulator fa = random().nextBoolean() ? new TaxonomyFacetsAccumulator(fsp, r, taxo) : new StandardFacetsAccumulator(fsp, r, taxo);
|
final TaxonomyFacetsAccumulator fa = random().nextBoolean() ? new TaxonomyFacetsAccumulator(fsp, r, taxo) : new OldFacetsAccumulator(fsp, r, taxo);
|
||||||
FacetsCollector fc = FacetsCollector.create(fa);
|
FacetsCollector fc = FacetsCollector.create(fa);
|
||||||
newSearcher(r).search(new MatchAllDocsQuery(), fc);
|
newSearcher(r).search(new MatchAllDocsQuery(), fc);
|
||||||
|
|
||||||
|
@ -252,7 +254,7 @@ public class TestFacetsCollector extends FacetTestCase {
|
||||||
FacetSearchParams fsp = new FacetSearchParams(
|
FacetSearchParams fsp = new FacetSearchParams(
|
||||||
new CountFacetRequest(new CategoryPath("a"), 10),
|
new CountFacetRequest(new CategoryPath("a"), 10),
|
||||||
new CountFacetRequest(new CategoryPath("b"), 10));
|
new CountFacetRequest(new CategoryPath("b"), 10));
|
||||||
final TaxonomyFacetsAccumulator fa = random().nextBoolean() ? new TaxonomyFacetsAccumulator(fsp, r, taxo) : new StandardFacetsAccumulator(fsp, r, taxo);
|
final TaxonomyFacetsAccumulator fa = random().nextBoolean() ? new TaxonomyFacetsAccumulator(fsp, r, taxo) : new OldFacetsAccumulator(fsp, r, taxo);
|
||||||
final FacetsCollector fc = FacetsCollector.create(fa);
|
final FacetsCollector fc = FacetsCollector.create(fa);
|
||||||
newSearcher(r).search(new MatchAllDocsQuery(), fc);
|
newSearcher(r).search(new MatchAllDocsQuery(), fc);
|
||||||
|
|
||||||
|
@ -284,7 +286,7 @@ public class TestFacetsCollector extends FacetTestCase {
|
||||||
FacetSearchParams fsp = new FacetSearchParams(
|
FacetSearchParams fsp = new FacetSearchParams(
|
||||||
new CountFacetRequest(new CategoryPath("a"), 10),
|
new CountFacetRequest(new CategoryPath("a"), 10),
|
||||||
new CountFacetRequest(new CategoryPath("b"), 10));
|
new CountFacetRequest(new CategoryPath("b"), 10));
|
||||||
final TaxonomyFacetsAccumulator fa = random().nextBoolean() ? new TaxonomyFacetsAccumulator(fsp, r, taxo) : new StandardFacetsAccumulator(fsp, r, taxo);
|
final TaxonomyFacetsAccumulator fa = random().nextBoolean() ? new TaxonomyFacetsAccumulator(fsp, r, taxo) : new OldFacetsAccumulator(fsp, r, taxo);
|
||||||
final FacetsCollector fc = FacetsCollector.create(fa);
|
final FacetsCollector fc = FacetsCollector.create(fa);
|
||||||
// this should populate the cached results, but doing search should clear the cache
|
// this should populate the cached results, but doing search should clear the cache
|
||||||
fc.getFacetResults();
|
fc.getFacetResults();
|
||||||
|
@ -325,7 +327,7 @@ public class TestFacetsCollector extends FacetTestCase {
|
||||||
|
|
||||||
// assert IntFacetResultHandler
|
// assert IntFacetResultHandler
|
||||||
FacetSearchParams fsp = new FacetSearchParams(new CountFacetRequest(new CategoryPath("a"), 10));
|
FacetSearchParams fsp = new FacetSearchParams(new CountFacetRequest(new CategoryPath("a"), 10));
|
||||||
TaxonomyFacetsAccumulator fa = random().nextBoolean() ? new TaxonomyFacetsAccumulator(fsp, r, taxo) : new StandardFacetsAccumulator(fsp, r, taxo);
|
TaxonomyFacetsAccumulator fa = random().nextBoolean() ? new TaxonomyFacetsAccumulator(fsp, r, taxo) : new OldFacetsAccumulator(fsp, r, taxo);
|
||||||
FacetsCollector fc = FacetsCollector.create(fa);
|
FacetsCollector fc = FacetsCollector.create(fa);
|
||||||
newSearcher(r).search(new MatchAllDocsQuery(), fc);
|
newSearcher(r).search(new MatchAllDocsQuery(), fc);
|
||||||
assertTrue("invalid ordinal for child node: 0", 0 != fc.getFacetResults().get(0).getFacetResultNode().subResults.get(0).ordinal);
|
assertTrue("invalid ordinal for child node: 0", 0 != fc.getFacetResults().get(0).getFacetResultNode().subResults.get(0).ordinal);
|
||||||
|
@ -340,7 +342,7 @@ public class TestFacetsCollector extends FacetTestCase {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
fa = new StandardFacetsAccumulator(fsp, r, taxo);
|
fa = new OldFacetsAccumulator(fsp, r, taxo);
|
||||||
}
|
}
|
||||||
fc = FacetsCollector.create(fa);
|
fc = FacetsCollector.create(fa);
|
||||||
newSearcher(r).search(new MatchAllDocsQuery(), fc);
|
newSearcher(r).search(new MatchAllDocsQuery(), fc);
|
||||||
|
@ -374,7 +376,7 @@ public class TestFacetsCollector extends FacetTestCase {
|
||||||
CountFacetRequest cfr = new CountFacetRequest(new CategoryPath("a"), 2);
|
CountFacetRequest cfr = new CountFacetRequest(new CategoryPath("a"), 2);
|
||||||
cfr.setResultMode(random().nextBoolean() ? ResultMode.GLOBAL_FLAT : ResultMode.PER_NODE_IN_TREE);
|
cfr.setResultMode(random().nextBoolean() ? ResultMode.GLOBAL_FLAT : ResultMode.PER_NODE_IN_TREE);
|
||||||
FacetSearchParams fsp = new FacetSearchParams(cfr);
|
FacetSearchParams fsp = new FacetSearchParams(cfr);
|
||||||
final TaxonomyFacetsAccumulator fa = random().nextBoolean() ? new TaxonomyFacetsAccumulator(fsp, r, taxo) : new StandardFacetsAccumulator(fsp, r, taxo);
|
final TaxonomyFacetsAccumulator fa = random().nextBoolean() ? new TaxonomyFacetsAccumulator(fsp, r, taxo) : new OldFacetsAccumulator(fsp, r, taxo);
|
||||||
FacetsCollector fc = FacetsCollector.create(fa);
|
FacetsCollector fc = FacetsCollector.create(fa);
|
||||||
newSearcher(r).search(new MatchAllDocsQuery(), fc);
|
newSearcher(r).search(new MatchAllDocsQuery(), fc);
|
||||||
|
|
||||||
|
@ -415,10 +417,10 @@ public class TestFacetsCollector extends FacetTestCase {
|
||||||
|
|
||||||
TaxonomyFacetsAccumulator[] accumulators = new TaxonomyFacetsAccumulator[] {
|
TaxonomyFacetsAccumulator[] accumulators = new TaxonomyFacetsAccumulator[] {
|
||||||
new TaxonomyFacetsAccumulator(fsp, indexReader, taxoReader),
|
new TaxonomyFacetsAccumulator(fsp, indexReader, taxoReader),
|
||||||
new StandardFacetsAccumulator(fsp, indexReader, taxoReader),
|
new OldFacetsAccumulator(fsp, indexReader, taxoReader),
|
||||||
new SamplingAccumulator(sampler, fsp, indexReader, taxoReader),
|
new SamplingAccumulator(sampler, fsp, indexReader, taxoReader),
|
||||||
new AdaptiveFacetsAccumulator(fsp, indexReader, taxoReader),
|
new AdaptiveFacetsAccumulator(fsp, indexReader, taxoReader),
|
||||||
new SamplingWrapper(new StandardFacetsAccumulator(fsp, indexReader, taxoReader), sampler)
|
new SamplingWrapper(new OldFacetsAccumulator(fsp, indexReader, taxoReader), sampler)
|
||||||
};
|
};
|
||||||
|
|
||||||
for (TaxonomyFacetsAccumulator fa : accumulators) {
|
for (TaxonomyFacetsAccumulator fa : accumulators) {
|
||||||
|
|
|
@ -11,6 +11,7 @@ import org.apache.lucene.document.Field;
|
||||||
import org.apache.lucene.document.TextField;
|
import org.apache.lucene.document.TextField;
|
||||||
import org.apache.lucene.facet.FacetTestCase;
|
import org.apache.lucene.facet.FacetTestCase;
|
||||||
import org.apache.lucene.facet.index.FacetFields;
|
import org.apache.lucene.facet.index.FacetFields;
|
||||||
|
import org.apache.lucene.facet.old.OldFacetsAccumulator;
|
||||||
import org.apache.lucene.facet.params.FacetIndexingParams;
|
import org.apache.lucene.facet.params.FacetIndexingParams;
|
||||||
import org.apache.lucene.facet.params.FacetSearchParams;
|
import org.apache.lucene.facet.params.FacetSearchParams;
|
||||||
import org.apache.lucene.facet.search.FacetRequest.ResultMode;
|
import org.apache.lucene.facet.search.FacetRequest.ResultMode;
|
||||||
|
@ -150,8 +151,8 @@ public class TestTopKInEachNodeResultHandler extends FacetTestCase {
|
||||||
FacetSearchParams facetSearchParams = new FacetSearchParams(iParams, facetRequests);
|
FacetSearchParams facetSearchParams = new FacetSearchParams(iParams, facetRequests);
|
||||||
|
|
||||||
FacetArrays facetArrays = new FacetArrays(PartitionsUtils.partitionSize(facetSearchParams.indexingParams, tr));
|
FacetArrays facetArrays = new FacetArrays(PartitionsUtils.partitionSize(facetSearchParams.indexingParams, tr));
|
||||||
StandardFacetsAccumulator sfa = new StandardFacetsAccumulator(facetSearchParams, is.getIndexReader(), tr, facetArrays);
|
OldFacetsAccumulator sfa = new OldFacetsAccumulator(facetSearchParams, is.getIndexReader(), tr, facetArrays);
|
||||||
sfa.setComplementThreshold(StandardFacetsAccumulator.DISABLE_COMPLEMENT);
|
sfa.setComplementThreshold(OldFacetsAccumulator.DISABLE_COMPLEMENT);
|
||||||
FacetsCollector fc = FacetsCollector.create(sfa);
|
FacetsCollector fc = FacetsCollector.create(sfa);
|
||||||
|
|
||||||
is.search(q, fc);
|
is.search(q, fc);
|
||||||
|
|
|
@ -4,6 +4,7 @@ import java.io.IOException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.lucene.facet.old.OldFacetsAccumulator;
|
||||||
import org.apache.lucene.facet.params.FacetIndexingParams;
|
import org.apache.lucene.facet.params.FacetIndexingParams;
|
||||||
import org.apache.lucene.facet.params.FacetSearchParams;
|
import org.apache.lucene.facet.params.FacetSearchParams;
|
||||||
import org.apache.lucene.search.MatchAllDocsQuery;
|
import org.apache.lucene.search.MatchAllDocsQuery;
|
||||||
|
@ -33,8 +34,8 @@ public class TestTopKResultsHandlerRandom extends BaseTestTopK {
|
||||||
throws IOException {
|
throws IOException {
|
||||||
Query q = new MatchAllDocsQuery();
|
Query q = new MatchAllDocsQuery();
|
||||||
FacetSearchParams facetSearchParams = searchParamsWithRequests(numResults, fip);
|
FacetSearchParams facetSearchParams = searchParamsWithRequests(numResults, fip);
|
||||||
StandardFacetsAccumulator sfa = new StandardFacetsAccumulator(facetSearchParams, indexReader, taxoReader);
|
OldFacetsAccumulator sfa = new OldFacetsAccumulator(facetSearchParams, indexReader, taxoReader);
|
||||||
sfa.setComplementThreshold(doComplement ? StandardFacetsAccumulator.FORCE_COMPLEMENT : StandardFacetsAccumulator.DISABLE_COMPLEMENT);
|
sfa.setComplementThreshold(doComplement ? OldFacetsAccumulator.FORCE_COMPLEMENT : OldFacetsAccumulator.DISABLE_COMPLEMENT);
|
||||||
FacetsCollector fc = FacetsCollector.create(sfa);
|
FacetsCollector fc = FacetsCollector.create(sfa);
|
||||||
searcher.search(q, fc);
|
searcher.search(q, fc);
|
||||||
List<FacetResult> facetResults = fc.getFacetResults();
|
List<FacetResult> facetResults = fc.getFacetResults();
|
||||||
|
|
Loading…
Reference in New Issue