You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mu...@apache.org on 2019/07/03 14:13:22 UTC

[lucene-solr] branch branch_8x updated: SOLR-13603: remove deprecated groupSpec methods usage

This is an automated email from the ASF dual-hosted git repository.

munendrasn pushed a commit to branch branch_8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/branch_8x by this push:
     new fd93b43  SOLR-13603: remove deprecated groupSpec methods usage
fd93b43 is described below

commit fd93b43cf935343cb5fe375c938564e86406dd9f
Author: Munendra S N <mu...@apache.org>
AuthorDate: Wed Jul 3 19:19:12 2019 +0530

    SOLR-13603: remove deprecated groupSpec methods usage
    
    This is precursor to removing deprecated methods
---
 solr/CHANGES.txt                                      |  2 ++
 .../apache/solr/handler/component/QueryComponent.java | 19 +++++++++++--------
 .../java/org/apache/solr/request/SimpleFacets.java    |  2 +-
 .../SearchGroupShardResponseProcessor.java            |  4 ++--
 .../TopGroupsShardResponseProcessor.java              | 14 ++++++++------
 .../TopGroupsResultTransformer.java                   |  4 ++--
 .../GroupedEndResultTransformer.java                  |  6 ++++--
 .../MainEndResultTransformer.java                     |  4 ++--
 .../SimpleEndResultTransformer.java                   |  4 ++--
 9 files changed, 34 insertions(+), 25 deletions(-)

diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index e916151..e04f85d 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -194,6 +194,8 @@ Other Changes
 
 * SOLR-12364: Add test cases for edismax boost (David Smiley, Munendra S N)
 
+* SOLR-13603: Remove usage of GroupingSpecification's deprecated methods (Munendra S N)
+
 ==================  8.1.2 ==================
 
 Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.
diff --git a/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java b/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
index 4461f1f..32f2e40 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
@@ -1306,7 +1306,7 @@ public class QueryComponent extends SearchComponent
     for (String field : groupingSpec.getFields()) {
       topsGroupsActionBuilder.addCommandField(new SearchGroupsFieldCommand.Builder()
           .setField(schema.getField(field))
-          .setGroupSort(groupingSpec.getGroupSort())
+          .setGroupSort(groupingSpec.getGroupSortSpec().getSort())
           .setTopNGroups(cmd.getOffset() + cmd.getLen())
           .setIncludeGroupCount(groupingSpec.isIncludeGroupCount())
           .build()
@@ -1342,7 +1342,8 @@ public class QueryComponent extends SearchComponent
         .setTruncateGroups(groupingSpec.isTruncateGroups() && groupingSpec.getFields().length > 0)
         .setSearcher(searcher);
 
-    int docsToCollect = Grouping.getMax(groupingSpec.getWithinGroupOffset(), groupingSpec.getWithinGroupLimit(), searcher.maxDoc());
+    SortSpec withinGroupSortSpec = groupingSpec.getWithinGroupSortSpec();
+    int docsToCollect = Grouping.getMax(withinGroupSortSpec.getOffset(), withinGroupSortSpec.getCount(), searcher.maxDoc());
     docsToCollect = Math.max(docsToCollect, 1);
 
     for (String field : groupingSpec.getFields()) {
@@ -1367,8 +1368,8 @@ public class QueryComponent extends SearchComponent
           new TopGroupsFieldCommand.Builder()
               .setQuery(cmd.getQuery())
               .setField(schemaField)
-              .setGroupSort(groupingSpec.getGroupSort())
-              .setSortWithinGroup(groupingSpec.getSortWithinGroup())
+              .setGroupSort(groupingSpec.getGroupSortSpec().getSort())
+              .setSortWithinGroup(withinGroupSortSpec.getSort())
               .setFirstPhaseGroups(topGroups)
               .setMaxDocPerGroup(docsToCollect)
               .setNeedScores(needScores)
@@ -1420,13 +1421,15 @@ public class QueryComponent extends SearchComponent
     int limitDefault = cmd.getLen(); // this is normally from "rows"
     Grouping grouping =
         new Grouping(searcher, result, cmd, cacheSecondPassSearch, maxDocsPercentageToCache, groupingSpec.isMain());
-    grouping.setGroupSort(groupingSpec.getGroupSort())
-        .setWithinGroupSort(groupingSpec.getSortWithinGroup())
+
+    SortSpec withinGroupSortSpec = groupingSpec.getWithinGroupSortSpec();
+    grouping.setGroupSort(groupingSpec.getGroupSortSpec().getSort())
+        .setWithinGroupSort(withinGroupSortSpec.getSort())
         .setDefaultFormat(groupingSpec.getResponseFormat())
         .setLimitDefault(limitDefault)
         .setDefaultTotalCount(defaultTotalCount)
-        .setDocsPerGroupDefault(groupingSpec.getWithinGroupLimit())
-        .setGroupOffsetDefault(groupingSpec.getWithinGroupOffset())
+        .setDocsPerGroupDefault(withinGroupSortSpec.getCount())
+        .setGroupOffsetDefault(withinGroupSortSpec.getOffset())
         .setGetGroupedDocSet(groupingSpec.isTruncateGroups());
 
     if (groupingSpec.getFields() != null) {
diff --git a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
index 35ef0fe..92f9a66 100644
--- a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
+++ b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
@@ -261,7 +261,7 @@ public class SimpleFacets {
     DocSet base = searcher.getDocSet(qlist);
     if (rb.grouping() && rb.getGroupingSpec().isTruncateGroups()) {
       Grouping grouping = new Grouping(searcher, null, rb.createQueryCommand(), false, 0, false);
-      grouping.setWithinGroupSort(rb.getGroupingSpec().getSortWithinGroup());
+      grouping.setWithinGroupSort(rb.getGroupingSpec().getWithinGroupSortSpec().getSort());
       if (rb.getGroupingSpec().getFields().length > 0) {
         grouping.addFieldCommand(rb.getGroupingSpec().getFields()[0], req);
       } else if (rb.getGroupingSpec().getFunctions().length > 0) {
diff --git a/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/SearchGroupShardResponseProcessor.java b/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/SearchGroupShardResponseProcessor.java
index 163c38d..71c34b8 100644
--- a/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/SearchGroupShardResponseProcessor.java
+++ b/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/SearchGroupShardResponseProcessor.java
@@ -50,9 +50,9 @@ public class SearchGroupShardResponseProcessor implements ShardResponseProcessor
   @Override
   public void process(ResponseBuilder rb, ShardRequest shardRequest) {
     SortSpec groupSortSpec = rb.getGroupingSpec().getGroupSortSpec();
-    Sort groupSort = rb.getGroupingSpec().getGroupSort();
+    Sort groupSort = rb.getGroupingSpec().getGroupSortSpec().getSort();
     final String[] fields = rb.getGroupingSpec().getFields();
-    Sort withinGroupSort = rb.getGroupingSpec().getSortWithinGroup();
+    Sort withinGroupSort = rb.getGroupingSpec().getWithinGroupSortSpec().getSort();
     assert withinGroupSort != null;
 
     final Map<String, List<Collection<SearchGroup<BytesRef>>>> commandSearchGroups = new HashMap<>(fields.length, 1.0f);
diff --git a/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/TopGroupsShardResponseProcessor.java b/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/TopGroupsShardResponseProcessor.java
index 92589d6..1525bcf 100644
--- a/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/TopGroupsShardResponseProcessor.java
+++ b/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/TopGroupsShardResponseProcessor.java
@@ -40,6 +40,7 @@ import org.apache.solr.handler.component.ShardRequest;
 import org.apache.solr.handler.component.ShardResponse;
 import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.search.Grouping;
+import org.apache.solr.search.SortSpec;
 import org.apache.solr.search.grouping.distributed.ShardResponseProcessor;
 import org.apache.solr.search.grouping.distributed.command.QueryCommandResult;
 import org.apache.solr.search.grouping.distributed.shardresultserializer.TopGroupsResultTransformer;
@@ -52,10 +53,11 @@ public class TopGroupsShardResponseProcessor implements ShardResponseProcessor {
   @Override
   @SuppressWarnings("unchecked")
   public void process(ResponseBuilder rb, ShardRequest shardRequest) {
-    Sort groupSort = rb.getGroupingSpec().getGroupSort();
+    Sort groupSort = rb.getGroupingSpec().getGroupSortSpec().getSort();
     String[] fields = rb.getGroupingSpec().getFields();
     String[] queries = rb.getGroupingSpec().getQueries();
-    Sort withinGroupSort = rb.getGroupingSpec().getSortWithinGroup();
+    SortSpec withinGroupSortSpec = rb.getGroupingSpec().getWithinGroupSortSpec();
+    Sort withinGroupSort = withinGroupSortSpec.getSort();
     assert withinGroupSort != null;
 
     boolean simpleOrMain = rb.getGroupingSpec().getResponseFormat() == Grouping.Format.simple ||
@@ -66,18 +68,18 @@ public class TopGroupsShardResponseProcessor implements ShardResponseProcessor {
     if (simpleOrMain) {
       groupOffsetDefault = 0;
     } else {
-      groupOffsetDefault = rb.getGroupingSpec().getWithinGroupOffset();
+      groupOffsetDefault = withinGroupSortSpec.getOffset();
     }
-    int docsPerGroupDefault = rb.getGroupingSpec().getWithinGroupLimit();
+    int docsPerGroupDefault = withinGroupSortSpec.getCount();
 
     Map<String, List<TopGroups<BytesRef>>> commandTopGroups = new HashMap<>();
     for (String field : fields) {
-      commandTopGroups.put(field, new ArrayList<TopGroups<BytesRef>>());
+      commandTopGroups.put(field, new ArrayList<>());
     }
 
     Map<String, List<QueryCommandResult>> commandTopDocs = new HashMap<>();
     for (String query : queries) {
-      commandTopDocs.put(query, new ArrayList<QueryCommandResult>());
+      commandTopDocs.put(query, new ArrayList<>());
     }
 
     TopGroupsResultTransformer serializer = new TopGroupsResultTransformer(rb);
diff --git a/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java b/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java
index 3327dd7..e736a9b 100644
--- a/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java
+++ b/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java
@@ -218,7 +218,7 @@ public class TopGroupsResultTransformer implements ShardResultTransformer<List<C
         Object[] convertedSortValues  = new Object[fieldDoc.fields.length];
         for (int j = 0; j < fieldDoc.fields.length; j++) {
           Object sortValue  = fieldDoc.fields[j];
-          Sort withinGroupSort = rb.getGroupingSpec().getSortWithinGroup();
+          Sort withinGroupSort = rb.getGroupingSpec().getWithinGroupSortSpec().getSort();
           SchemaField field = withinGroupSort.getSort()[j].getField() != null ? schema.getFieldOrNull(withinGroupSort.getSort()[j].getField()) : null;
           if (field != null) {
             FieldType fieldType = field.getType();
@@ -271,7 +271,7 @@ public class TopGroupsResultTransformer implements ShardResultTransformer<List<C
       Object[] convertedSortValues  = new Object[fieldDoc.fields.length];
       for (int j = 0; j < fieldDoc.fields.length; j++) {
         Object sortValue  = fieldDoc.fields[j];
-        Sort groupSort = rb.getGroupingSpec().getGroupSort();
+        Sort groupSort = rb.getGroupingSpec().getGroupSortSpec().getSort();
         SchemaField field = groupSort.getSort()[j].getField() != null
                           ? schema.getFieldOrNull(groupSort.getSort()[j].getField()) : null;
         convertedSortValues[j] = ShardResultTransformerUtils.marshalSortValue(sortValue, field);
diff --git a/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/GroupedEndResultTransformer.java b/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/GroupedEndResultTransformer.java
index 6757d9c..3ba3470 100644
--- a/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/GroupedEndResultTransformer.java
+++ b/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/GroupedEndResultTransformer.java
@@ -38,6 +38,7 @@ import org.apache.solr.handler.component.ResponseBuilder;
 import org.apache.solr.schema.FieldType;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.search.SolrIndexSearcher;
+import org.apache.solr.search.SortSpec;
 import org.apache.solr.search.grouping.distributed.command.QueryCommandResult;
 
 /**
@@ -54,6 +55,7 @@ public class GroupedEndResultTransformer implements EndResultTransformer {
   @Override
   public void transform(Map<String, ?> result, ResponseBuilder rb, SolrDocumentSource solrDocumentSource) {
     NamedList<Object> commands = new SimpleOrderedMap<>();
+    SortSpec withinGroupSortSpec = rb.getGroupingSpec().getWithinGroupSortSpec();
     for (Map.Entry<String, ?> entry : result.entrySet()) {
       Object value = entry.getValue();
       if (TopGroups.class.isInstance(value)) {
@@ -90,7 +92,7 @@ public class GroupedEndResultTransformer implements EndResultTransformer {
           if (!Float.isNaN(group.maxScore)) {
             docList.setMaxScore(group.maxScore);
           }
-          docList.setStart(rb.getGroupingSpec().getWithinGroupOffset());
+          docList.setStart(withinGroupSortSpec.getOffset());
           retrieveAndAdd(docList, solrDocumentSource, group.scoreDocs);
           groupResult.add("doclist", docList);
           groups.add(groupResult);
@@ -108,7 +110,7 @@ public class GroupedEndResultTransformer implements EndResultTransformer {
         if (!Float.isNaN(queryCommandResult.getMaxScore())) {
           docList.setMaxScore(queryCommandResult.getMaxScore());
         }
-        docList.setStart(rb.getGroupingSpec().getWithinGroupOffset());
+        docList.setStart(withinGroupSortSpec.getOffset());
         retrieveAndAdd(docList, solrDocumentSource, queryCommandResult.getTopDocs().scoreDocs);
         command.add("doclist", docList);
         commands.add(entry.getKey(), command);
diff --git a/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/MainEndResultTransformer.java b/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/MainEndResultTransformer.java
index 0e03e4e..318fc32 100644
--- a/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/MainEndResultTransformer.java
+++ b/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/MainEndResultTransformer.java
@@ -53,7 +53,7 @@ public class MainEndResultTransformer implements EndResultTransformer {
       @SuppressWarnings("unchecked")
       TopGroups<BytesRef> topGroups = (TopGroups<BytesRef>) value;
       SolrDocumentList docList = new SolrDocumentList();
-      docList.setStart(rb.getGroupingSpec().getOffset());
+      docList.setStart(rb.getGroupingSpec().getGroupSortSpec().getOffset());
       docList.setNumFound(rb.totalHitCount);
 
       float maxScore = Float.NEGATIVE_INFINITY;
@@ -77,7 +77,7 @@ public class MainEndResultTransformer implements EndResultTransformer {
       SolrDocumentList docList = new SolrDocumentList();
       TopDocs topDocs = queryCommandResult.getTopDocs();
 
-      docList.setStart(rb.getGroupingSpec().getOffset());
+      docList.setStart(rb.getGroupingSpec().getGroupSortSpec().getOffset());
       docList.setNumFound(topDocs.totalHits.value);
       if (!Float.isNaN(queryCommandResult.getMaxScore())) {
         docList.setMaxScore(queryCommandResult.getMaxScore());
diff --git a/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/SimpleEndResultTransformer.java b/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/SimpleEndResultTransformer.java
index 01adb45..0723136 100644
--- a/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/SimpleEndResultTransformer.java
+++ b/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/SimpleEndResultTransformer.java
@@ -49,7 +49,7 @@ public class SimpleEndResultTransformer implements EndResultTransformer {
           command.add("ngroups", topGroups.totalGroupCount);
         }
         SolrDocumentList docList = new SolrDocumentList();
-        docList.setStart(rb.getGroupingSpec().getOffset());
+        docList.setStart(rb.getGroupingSpec().getGroupSortSpec().getOffset());
         docList.setNumFound(topGroups.totalHitCount);
 
         float maxScore = Float.NEGATIVE_INFINITY;
@@ -76,7 +76,7 @@ public class SimpleEndResultTransformer implements EndResultTransformer {
 
         TopDocs topDocs = queryCommandResult.getTopDocs();
         SolrDocumentList docList = new SolrDocumentList();
-        docList.setStart(rb.getGroupingSpec().getOffset());
+        docList.setStart(rb.getGroupingSpec().getGroupSortSpec().getOffset());
         docList.setNumFound(topDocs.totalHits.value);
 
         if (!Float.isNaN(queryCommandResult.getMaxScore())) {