cpoerschke commented on a change in pull request #300: SOLR-11831: Skip second grouping step if group.limit is 1 (aka Las Vegas Patch) URL: https://github.com/apache/lucene-solr/pull/300#discussion_r321732406
########## File path: solr/core/src/test/org/apache/solr/TestDistributedGrouping.java ########## @@ -425,6 +426,65 @@ public void test() throws Exception { //Debug simpleQuery("q", "*:*", "rows", 10, "fl", "id," + i1, "group", "true", "group.field", i1, "debug", "true"); + doTestGroupSkipSecondStep(); + } + + /* + SOLR-11831, test skipping the second grouping step if the query only retrieves on document per group + */ + private void doTestGroupSkipSecondStep() throws Exception { + ignoreException(GroupParams.GROUP_SKIP_DISTRIBUTED_SECOND); // don't print stack trace for exception raised by group.skip.second.step + // Ignore numFound if group.skip.second.step is enabled because the number of documents per group will not be computed (will default to 1) + handle.put("numFound", SKIP); + query("q", "{!func}id_i1", "rows", 3, "group.skip.second.step", true, "group.limit", 1, "fl", "id," + i1, "group", "true", + "group.field", i1); + query("q", "kings", "group.skip.second.step", true, "fl", "id," + i1, "group", "true", "group.field", i1); + query("q", "{!func}id_i1", "rows", 3, "group.skip.second.step", true, "fl", "id," + i1, "group", "true", + "group.field", i1); + query("q", "1234doesnotmatchanything1234", "group.skip.second.step", true, "fl", "id," + i1, "group", "true", "group.field", i1); + + ignoreException("Illegal grouping specification"); + // ngroups will return the corrent results, the problem is that numFound for each group might be wrong in case of multishard setting - but there is no way to + // enable/disable it. + //assertSimpleQueryThrows("q", "{!func}id_i1", "group.skip.second.step", true, "fl", "id," + i1, "group", "true", "group.field", i1, "group.ngroups", true); + assertSimpleQueryThrows("q", "{!func}id", "group.skip.second.step", true, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", 5); + assertSimpleQueryThrows("q", "{!func}id_i1", "group.skip.second.step", true, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", 0); + // group sorted in a different way should fail Review comment: Following on from the above reasoning, test coverage for `sort` and `group.sort` interaction with `group.skip.second.step` could include something like ``` query("q", "{!func}id_i1", "group.skip.second.step", true, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", 1, "sort", i1+" desc"); query("q", "{!func}id_i1", "group.skip.second.step", true, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", 1, "sort", i1+" desc", "group.sort", i1+" desc"); ``` i.e. `group.sort` being absent is fine and `group.sort` matching `sort` is fine too. These should pass, I think, no? https://github.com/cpoerschke/lucene-solr/commit/3690cb3d4ed537546d2d876eb00dcc0fb735a557 has those two tests commented out because mysteriously most of the time they fail (but part of the time they succeed!). Will add failure example output. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org