diff --git a/source/java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClient.java b/source/java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClient.java index 7685df72a1..14aea6c167 100644 --- a/source/java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClient.java +++ b/source/java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClient.java @@ -275,7 +275,7 @@ public class SolrQueryHTTPClient implements BeanFactoryAware, InitializingBean Pair httpClientAndBaseUrl = mapping.getHttpClientAndBaseUrl(); HttpClient httpClient = httpClientAndBaseUrl.getFirst(); - String url = buildStatsUrl(searchParameters, httpClientAndBaseUrl.getSecond(), locale); + String url = buildStatsUrl(searchParameters, httpClientAndBaseUrl.getSecond(), locale, mapping); JSONObject body = buildStatsBody(searchParameters, tenantService.getCurrentUserDomain(), locale); if(httpClient == null) @@ -312,7 +312,7 @@ public class SolrQueryHTTPClient implements BeanFactoryAware, InitializingBean } } - protected String buildStatsUrl(StatsParameters searchParameters, String baseUrl, Locale locale) throws UnsupportedEncodingException + protected String buildStatsUrl(StatsParameters searchParameters, String baseUrl, Locale locale, SolrStoreMappingWrapper mapping) throws UnsupportedEncodingException { URLCodec encoder = new URLCodec(); StringBuilder url = new StringBuilder(); @@ -337,6 +337,28 @@ public class SolrQueryHTTPClient implements BeanFactoryAware, InitializingBean url.append("&stats.").append(entry.getKey()).append("=").append(encoder.encode(entry.getValue(), "UTF-8")); } + if((mapping != null) && ((searchParameters.getStores().size() > 1) || (mapping.isSharded()))) + { + boolean requiresSeparator = false; + url.append("&shards="); + for(StoreRef storeRef : searchParameters.getStores()) + { + SolrStoreMappingWrapper storeMapping = extractMapping(storeRef); + + if(requiresSeparator) + { + url.append(','); + } + else + { + requiresSeparator = true; + } + + url.append(storeMapping.getShards()); + + } + } + return url.toString(); } diff --git a/source/test-java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClientTest.java b/source/test-java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClientTest.java index e786c9ee41..a5a2662d74 100644 --- a/source/test-java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClientTest.java +++ b/source/test-java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClientTest.java @@ -74,7 +74,7 @@ public class SolrQueryHTTPClientTest SolrQueryHTTPClient client = new SolrQueryHTTPClient(); client.setLanguageMappings(languageMappings); StatsParameters params = getParameters(); - String url = client.buildStatsUrl(params, "http://localhost:8080/solr/alfresco/select", Locale.CANADA_FRENCH); + String url = client.buildStatsUrl(params, "http://localhost:8080/solr/alfresco/select", Locale.CANADA_FRENCH, null); assertNotNull(url); assertTrue(url.contains("locale=fr_CA")); assertTrue(url.contains("sort=contentsize"));