Class FirstPassGroupingCollector<T>
- java.lang.Object
-
- org.apache.lucene.search.SimpleCollector
-
- org.apache.lucene.search.grouping.FirstPassGroupingCollector<T>
-
- All Implemented Interfaces:
Collector
,LeafCollector
public class FirstPassGroupingCollector<T> extends SimpleCollector
FirstPassGroupingCollector is the first of two passes necessary to collect grouped hits. This pass gathers the top N sorted groups. Groups are defined by aGroupSelector
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.
-
-
Field Summary
Fields Modifier and Type Field Description protected TreeSet<CollectedSearchGroup<T>>
orderedGroups
-
Constructor Summary
Constructors Constructor Description FirstPassGroupingCollector(GroupSelector<T> groupSelector, Sort groupSort, int topNGroups)
Create the first pass collector.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
collect(int doc)
protected void
doSetNextReader(LeafReaderContext readerContext)
GroupSelector<T>
getGroupSelector()
Collection<SearchGroup<T>>
getTopGroups(int groupOffset)
Returns top groups, starting from offset.ScoreMode
scoreMode()
void
setScorer(Scorable scorer)
-
Methods inherited from class org.apache.lucene.search.SimpleCollector
getLeafCollector
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.lucene.search.LeafCollector
competitiveIterator
-
-
-
-
Field Detail
-
orderedGroups
protected TreeSet<CollectedSearchGroup<T>> orderedGroups
- NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.
-
-
Constructor Detail
-
FirstPassGroupingCollector
public FirstPassGroupingCollector(GroupSelector<T> groupSelector, Sort groupSort, int topNGroups)
Create the first pass collector.- Parameters:
groupSelector
- a GroupSelector used to defined groupsgroupSort
- 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.
-
-
Method Detail
-
scoreMode
public ScoreMode scoreMode()
-
getTopGroups
public Collection<SearchGroup<T>> getTopGroups(int groupOffset) throws IOException
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 groups- Returns:
- top groups, starting from offset
- Throws:
IOException
-
setScorer
public void setScorer(Scorable scorer) throws IOException
- Specified by:
setScorer
in interfaceLeafCollector
- Overrides:
setScorer
in classSimpleCollector
- Throws:
IOException
-
collect
public void collect(int doc) throws IOException
- Specified by:
collect
in interfaceLeafCollector
- Specified by:
collect
in classSimpleCollector
- Throws:
IOException
-
doSetNextReader
protected void doSetNextReader(LeafReaderContext readerContext) throws IOException
- Overrides:
doSetNextReader
in classSimpleCollector
- Throws:
IOException
-
getGroupSelector
public GroupSelector<T> getGroupSelector()
- Returns:
- the GroupSelector used for this Collector
-
-