You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mk...@apache.org on 2017/04/25 10:13:53 UTC

lucene-solr:master: SOLR-10520: fix child.facet.field counts

Repository: lucene-solr
Updated Branches:
  refs/heads/master cd02dd7d4 -> 680f4d7fd


SOLR-10520: fix child.facet.field counts


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/680f4d7f
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/680f4d7f
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/680f4d7f

Branch: refs/heads/master
Commit: 680f4d7fd378868254786107de92a894758f667c
Parents: cd02dd7
Author: Mikhail Khludnev <mk...@apache.org>
Authored: Tue Apr 25 12:27:18 2017 +0300
Committer: Mikhail Khludnev <mk...@apache.org>
Committed: Tue Apr 25 12:33:05 2017 +0300

----------------------------------------------------------------------
 solr/CHANGES.txt                                        |  1 +
 .../search/join/BlockJoinFacetComponentSupport.java     | 12 +++++++-----
 .../solr/search/join/BlockJoinFacetDistribTest.java     | 10 ++++++++--
 3 files changed, 16 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/680f4d7f/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 19fc3f8..417eed6 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -241,6 +241,7 @@ Bug Fixes
   when there was a mincount > 1.  This has been corrected by changing numBuckets cardinality processing to
   ignore mincount > 1 for non-distributed requests. (yonik)
 
+* SOLR-10520: child.facet.field doubled counts at least when rows>0. (Dr. Oleg Savrasov via Mikhail Khludnev) 
 
 Other Changes
 ----------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/680f4d7f/solr/core/src/java/org/apache/solr/search/join/BlockJoinFacetComponentSupport.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/join/BlockJoinFacetComponentSupport.java b/solr/core/src/java/org/apache/solr/search/join/BlockJoinFacetComponentSupport.java
index 85aa799..560e441 100644
--- a/solr/core/src/java/org/apache/solr/search/join/BlockJoinFacetComponentSupport.java
+++ b/solr/core/src/java/org/apache/solr/search/join/BlockJoinFacetComponentSupport.java
@@ -124,11 +124,13 @@ abstract class BlockJoinFacetComponentSupport extends SearchComponent {
 
   @Override
   public void handleResponses(ResponseBuilder rb, ShardRequest sreq) {
-    NamedList collectedChildFacetFields = getChildFacetFields(rb.rsp.getValues(), true);
-    List<ShardResponse> responses = sreq.responses;
-    for (ShardResponse shardResponse : responses) {
-      NamedList shardChildFacetFields = getChildFacetFields(shardResponse.getSolrResponse().getResponse(), false);
-      mergeFacets(collectedChildFacetFields, shardChildFacetFields);
+    if ((sreq.purpose & ShardRequest.PURPOSE_GET_TOP_IDS) != 0) {
+      NamedList collectedChildFacetFields = getChildFacetFields(rb.rsp.getValues(), true);
+      List<ShardResponse> responses = sreq.responses;
+      for (ShardResponse shardResponse : responses) {
+        NamedList shardChildFacetFields = getChildFacetFields(shardResponse.getSolrResponse().getResponse(), false);
+        mergeFacets(collectedChildFacetFields, shardChildFacetFields);
+      }
     }
   }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/680f4d7f/solr/core/src/test/org/apache/solr/search/join/BlockJoinFacetDistribTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/join/BlockJoinFacetDistribTest.java b/solr/core/src/test/org/apache/solr/search/join/BlockJoinFacetDistribTest.java
index 2bd30fa..1b12657 100644
--- a/solr/core/src/test/org/apache/solr/search/join/BlockJoinFacetDistribTest.java
+++ b/solr/core/src/test/org/apache/solr/search/join/BlockJoinFacetDistribTest.java
@@ -130,12 +130,18 @@ public class BlockJoinFacetDistribTest extends SolrCloudTestCase{
 
     // to parent query
     final String childQueryClause = "COLOR_s:("+(matchingColors.toString().replaceAll("[,\\[\\]]", " "))+")";
+      final boolean oldFacetsEnabled = random().nextBoolean();
       QueryResponse results = query("q", "{!parent which=\"type_s:parent\"}"+childQueryClause,
-          "facet", random().nextBoolean() ? "true":"false",
+          "facet", oldFacetsEnabled ? "true":"false", // try to enforce multiple phases
+              oldFacetsEnabled ? "facet.field" : "ignore" , "BRAND_s",
+              oldFacetsEnabled&&usually() ? "facet.limit" : "ignore" , "1",
+              oldFacetsEnabled&&usually() ? "facet.mincount" : "ignore" , "2",
+              oldFacetsEnabled&&usually() ? "facet.overrequest.count" : "ignore" , "0",
           "qt",  random().nextBoolean() ? "blockJoinDocSetFacetRH" : "blockJoinFacetRH",
           "child.facet.field", "COLOR_s",
           "child.facet.field", "SIZE_s",
-          "rows","0" // we care only abt results 
+          "distrib.singlePass", random().nextBoolean() ? "true":"false",
+          "rows", random().nextBoolean() ? "0":"10"
           );
       NamedList<Object> resultsResponse = results.getResponse();
       assertNotNull(resultsResponse);