Class Grouping.Command<T>

  • Direct Known Subclasses:
    Grouping.CommandField, Grouping.CommandFunc, Grouping.CommandQuery
    Enclosing class:
    Grouping

    public abstract class Grouping.Command<T>
    extends Object
    General group command. A group command is responsible for creating the first and second pass collectors. A group command is also responsible for creating the response structure.

    Note: Maybe the creating the response structure should be done in something like a ReponseBuilder??? Warning NOT thread save!

    • Field Detail

      • withinGroupSort

        public org.apache.lucene.search.Sort withinGroupSort
      • groupSort

        public org.apache.lucene.search.Sort groupSort
      • docsPerGroup

        public int docsPerGroup
      • groupOffset

        public int groupOffset
      • numGroups

        public int numGroups
      • offset

        public int offset
      • main

        public boolean main
    • Constructor Detail

      • Command

        public Command()
    • Method Detail

      • prepare

        protected abstract void prepare()
                                 throws IOException
        Prepare this Command for execution.
        Throws:
        IOException - If I/O related errors occur
      • createFirstPassCollector

        protected abstract org.apache.lucene.search.Collector createFirstPassCollector()
                                                                                throws IOException
        Returns one or more Collector instances that are needed to perform the first pass search. If multiple Collectors are returned then these wrapped in a MultiCollector.
        Returns:
        one or more Collector instances that are need to perform the first pass search
        Throws:
        IOException - If I/O related errors occur
      • createSecondPassCollector

        protected org.apache.lucene.search.Collector createSecondPassCollector()
                                                                        throws IOException
        Returns zero or more Collector instances that are needed to perform the second pass search. In the case when no Collector instances are created null is returned. If multiple Collectors are returned then these wrapped in a MultiCollector.
        Returns:
        zero or more Collector instances that are needed to perform the second pass search
        Throws:
        IOException - If I/O related errors occur
      • createAllGroupCollector

        public org.apache.lucene.search.grouping.AllGroupHeadsCollector<?> createAllGroupCollector()
                                                                                            throws IOException
        Returns a collector that is able to return the most relevant document of all groups. Returns null if the command doesn't support this type of collector.
        Returns:
        a collector that is able to return the most relevant document of all groups.
        Throws:
        IOException - If I/O related errors occur
      • finish

        protected abstract void finish()
                                throws IOException
        Performs any necessary post actions to prepare the response.
        Throws:
        IOException - If I/O related errors occur
      • getMatches

        public abstract int getMatches()
        Returns the number of matches for this Command.
        Returns:
        the number of matches for this Command
      • getNumberOfGroups

        protected Integer getNumberOfGroups()
        Returns the number of groups found for this Command. If the command doesn't support counting the groups null is returned.
        Returns:
        the number of groups found for this Command
      • populateScoresIfNecessary

        protected void populateScoresIfNecessary()
                                          throws IOException
        Throws:
        IOException
      • commonResponse

        protected org.apache.solr.common.util.NamedList<Object> commonResponse()
      • getDocList

        protected DocList getDocList​(org.apache.lucene.search.grouping.GroupDocs<?> groups)
      • addDocList

        protected void addDocList​(org.apache.solr.common.util.NamedList<? super DocList> rsp,
                                  org.apache.lucene.search.grouping.GroupDocs<?> groups)
      • createSimpleResponse

        protected DocList createSimpleResponse()