diff --git a/source/java/org/alfresco/repo/search/impl/lucene/SolrJSONResultSet.java b/source/java/org/alfresco/repo/search/impl/lucene/SolrJSONResultSet.java index a31a8707e7..dd7c080aa8 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/SolrJSONResultSet.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/SolrJSONResultSet.java @@ -299,12 +299,6 @@ public class SolrJSONResultSet implements ResultSet, JSONResult pivotFacets = buildPivot(facet_pivot, pivotName); } } - /* - * "0":4 - * start:0 - * end:100 - * - */ if(facet_counts.has("facet_ranges")) { 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 429eb42611..ff042f52d0 100644 --- a/source/java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClient.java +++ b/source/java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClient.java @@ -26,6 +26,24 @@ package org.alfresco.repo.search.impl.solr; import static org.alfresco.util.SearchDateConversion.parseDateInterval; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.Reader; +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.StringJoiner; + +import javax.servlet.http.HttpServletResponse; + import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.opencmis.dictionary.CMISStrictDictionaryService; import org.alfresco.repo.admin.RepositoryState; @@ -91,21 +109,6 @@ import org.springframework.beans.factory.BeanFactoryAware; import org.springframework.beans.factory.InitializingBean; import org.springframework.extensions.surf.util.I18NUtil; -import javax.servlet.http.HttpServletResponse; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.Reader; -import java.io.UnsupportedEncodingException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.StringJoiner; - /** * @author Andy */ @@ -839,6 +842,35 @@ public class SolrQueryHTTPClient implements BeanFactoryAware, InitializingBean url.append("&facet.range.other=").append(encoder.encode(""+searchParameters.getRange().getOther(), "UTF-8")); } url.append("&facet.range.hardend=").append(encoder.encode(""+searchParameters.getRange().isHardend(), "UTF-8")); + if(!searchParameters.getRange().getExcludeFilters().isEmpty()) + { + url.append("&range.field="); + if (searchParameters.getRange().getExcludeFilters() != null && !searchParameters.getRange().getExcludeFilters().isEmpty()) + { + StringBuilder prefix = new StringBuilder("{!ex="); + Iterator itr = searchParameters.getRange().getExcludeFilters().iterator(); + while(itr.hasNext()) + { + String val = itr.next(); + prefix.append(val); + if(itr.hasNext()) + { + prefix.append(","); + } + } + prefix.append("}"); + url.append(prefix); + } + + } + if(!searchParameters.getRange().getTags().isEmpty()) + { + for(String tag:searchParameters.getRange().getTags()) + { + + url.append(String.format("&fq={!tag=%1$s}%1$s",tag)); + } + } } } 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 8fc612ba37..ae76449fe7 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 @@ -37,6 +37,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.io.UnsupportedEncodingException; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; @@ -441,7 +442,13 @@ public class SolrQueryHTTPClientTest assertTrue(url.contains("&facet.range.other=before")); assertTrue(url.contains("&facet.range.hardend=true")); - RangeParameters range2 = new RangeParameters("content.size", "0", "1000000", "10000", true, null, null, null, null); + List filters = new ArrayList(); + filters.add("bart"); + filters.add("homer"); + List tags = new ArrayList(); + tags.add("dt"); + tags.add("doc"); + RangeParameters range2 = new RangeParameters("content.size", "0", "1000000", "10000", true, null, null, tags, filters); params.setRange(range2); urlBuilder = new StringBuilder(); client.buildRangeParameters(params, encoder, urlBuilder); @@ -454,6 +461,9 @@ public class SolrQueryHTTPClientTest assertFalse(url2.contains("&facet.range.include=lower")); assertFalse(url2.contains("&facet.range.other=before")); assertTrue(url2.contains("&facet.range.hardend=true")); + assertTrue(url2.contains("&range.field={!ex=bart,homer}")); + assertTrue(url2.contains("&fq={!tag=dt}dt")); + assertTrue(url2.contains("&fq={!tag=doc}doc")); } } \ No newline at end of file