You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Martijn van Groningen (Issue Comment Edited) (JIRA)" <ji...@apache.org> on 2012/02/15 23:13:59 UTC

[jira] [Issue Comment Edited] (LUCENE-3778) Create a grouping convenience class

    [ https://issues.apache.org/jira/browse/LUCENE-3778?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13208846#comment-13208846 ] 

Martijn van Groningen edited comment on LUCENE-3778 at 2/15/12 10:12 PM:
-------------------------------------------------------------------------

Yes, it would look something like that.

bq. Would you also handle block (single pass) grouping with the same class...?
I think we can do this. The block grouping returns TopGroups as result.

bq. I guess you'd then .getAllGroups(), .getAllGroupHeads() after .search(...)?
Yes, we need that. In the case of getAllGroups() the TopGroups#totalGroupCount field can be used when the user is only interested in the number of matching groups.

bq. Hmm would we try to handle Term/BytesRef and Function/MutableValue with the same class?
With generics?
{code}
class GroupingSearch {

  public <T> TopGroups<T> search(IndexSearcher searcher, Query query, int numGroups) {
    ...
  }

}
{code}

Function usage:
{code}
GroupSearch ctx = new GroupingSearch(groupByFunction);
ctx.useFunction();
...
TopGroups<MutableValue> topGroups = ctx.search(searcher, query, numGroups);
{code}

The same could work for grouping by docvalues types int and float, right?

Maybe distributed grouping needs its own class? Since the usage is different from a non distributed grouping.
                
      was (Author: martijn.v.groningen):
    Yes, it would look something like that.

bq. Would you also handle block (single pass) grouping with the same class...?
I think we can do this. The block grouping returns TopGroups as result.

bq. I guess you'd then .getAllGroups(), .getAllGroupHeads() after .search(...)?
Yes, we need that. In the case of getAllGroups() the TopGroups#totalGroupCount field can be used when the user is only interested in the number of matching groups.

bq. Hmm would we try to handle Term/BytesRef and Function/MutableValue with the same class?
With generics?
{code}
class GroupingSearch {

  public <T> TopGroups<T> search() {
    ...
  }

}
{code}

Function usage:
{code}
GroupSearch ctx = new GroupingSearch(groupByFunction);
ctx.useFunction();
...
TopGroups<MutableValue> topGroups = ctx.search(searcher, query, numGroups);
{code}

The same could work for grouping by docvalues types int and float, right?

Maybe distributed grouping needs its own class? Since the usage is different from a non distributed grouping.
                  
> Create a grouping convenience class
> -----------------------------------
>
>                 Key: LUCENE-3778
>                 URL: https://issues.apache.org/jira/browse/LUCENE-3778
>             Project: Lucene - Java
>          Issue Type: Improvement
>          Components: modules/grouping
>            Reporter: Martijn van Groningen
>
> Currently the grouping module has many collector classes with a lot of different options per class. I think it would be a good idea to have a GroupUtil (Or another name?) convenience class. I think this could be a builder, because of the many options (sort,sortWithinGroup,groupOffset,groupCount and more) and implementations (term/dv/function) grouping has.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org