Class AbstractFirstPassGroupingCollector<GROUP_VALUE_TYPE>
- java.lang.Object
-
- org.apache.lucene.search.Collector
-
- org.apache.lucene.search.grouping.AbstractFirstPassGroupingCollector<GROUP_VALUE_TYPE>
-
- Direct Known Subclasses:
TermFirstPassGroupingCollector
public abstract class AbstractFirstPassGroupingCollector<GROUP_VALUE_TYPE> extends org.apache.lucene.search.Collector
FirstPassGroupingCollector is the first of two passes necessary to collect grouped hits. This pass gathers the top N sorted groups. Concrete subclasses define what a group is and how it is internally collected.See
org.apache.lucene.search.grouping
for more details including a full code example.- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
-
Constructor Summary
Constructors Constructor Description AbstractFirstPassGroupingCollector(org.apache.lucene.search.Sort groupSort, int topNGroups)
Create the first pass collector.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description boolean
acceptsDocsOutOfOrder()
void
collect(int doc)
protected abstract GROUP_VALUE_TYPE
copyDocGroupValue(GROUP_VALUE_TYPE groupValue, GROUP_VALUE_TYPE reuse)
Returns a copy of the specified group value by creating a new instance and copying the value from the specified groupValue in the new instance.protected abstract GROUP_VALUE_TYPE
getDocGroupValue(int doc)
Returns the group value for the specified doc.Collection<SearchGroup<GROUP_VALUE_TYPE>>
getTopGroups(int groupOffset, boolean fillFields)
Returns top groups, starting from offset.void
setNextReader(org.apache.lucene.index.IndexReader reader, int docBase)
void
setScorer(org.apache.lucene.search.Scorer scorer)
-
-
-
Constructor Detail
-
AbstractFirstPassGroupingCollector
public AbstractFirstPassGroupingCollector(org.apache.lucene.search.Sort groupSort, int topNGroups) throws IOException
Create the first pass collector.- Parameters:
groupSort
- TheSort
used to sort the groups. The top sorted document within each group according to groupSort, determines how that group sorts against other groups. This must be non-null, ie, if you want to groupSort by relevance use Sort.RELEVANCE.topNGroups
- How many top groups to keep.- Throws:
IOException
- If I/O related errors occur
-
-
Method Detail
-
getTopGroups
public Collection<SearchGroup<GROUP_VALUE_TYPE>> getTopGroups(int groupOffset, boolean fillFields)
Returns top groups, starting from offset. This may return null, if no groups were collected, or if the number of unique groups collected is <= offset.- Parameters:
groupOffset
- The offset in the collected groupsfillFields
- Whether to fill toSearchGroup.sortValues
- Returns:
- top groups, starting from offset
-
setScorer
public void setScorer(org.apache.lucene.search.Scorer scorer) throws IOException
- Specified by:
setScorer
in classorg.apache.lucene.search.Collector
- Throws:
IOException
-
collect
public void collect(int doc) throws IOException
- Specified by:
collect
in classorg.apache.lucene.search.Collector
- Throws:
IOException
-
acceptsDocsOutOfOrder
public boolean acceptsDocsOutOfOrder()
- Specified by:
acceptsDocsOutOfOrder
in classorg.apache.lucene.search.Collector
-
setNextReader
public void setNextReader(org.apache.lucene.index.IndexReader reader, int docBase) throws IOException
- Specified by:
setNextReader
in classorg.apache.lucene.search.Collector
- Throws:
IOException
-
getDocGroupValue
protected abstract GROUP_VALUE_TYPE getDocGroupValue(int doc)
Returns the group value for the specified doc.- Parameters:
doc
- The specified doc- Returns:
- the group value for the specified doc
-
copyDocGroupValue
protected abstract GROUP_VALUE_TYPE copyDocGroupValue(GROUP_VALUE_TYPE groupValue, GROUP_VALUE_TYPE reuse)
Returns a copy of the specified group value by creating a new instance and copying the value from the specified groupValue in the new instance. Or optionally the reuse argument can be used to copy the group value in.- Parameters:
groupValue
- The group value to copyreuse
- Optionally a reuse instance to prevent a new instance creation- Returns:
- a copy of the specified group value
-
-