Merged searchrep (5.2.1) to 5.2.N (5.2.1)

136733 msuzuki: Search-340, added mapping for tags and excludeFilters


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@137047 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Gethin James
2017-06-01 11:09:15 +00:00
parent 53adbf1d53
commit 3d8da9cf63
3 changed files with 58 additions and 22 deletions

View File

@@ -299,12 +299,6 @@ public class SolrJSONResultSet implements ResultSet, JSONResult
pivotFacets = buildPivot(facet_pivot, pivotName); pivotFacets = buildPivot(facet_pivot, pivotName);
} }
} }
/*
* "0":4
* start:0
* end:100
*
*/
if(facet_counts.has("facet_ranges")) if(facet_counts.has("facet_ranges"))
{ {

View File

@@ -26,6 +26,24 @@
package org.alfresco.repo.search.impl.solr; package org.alfresco.repo.search.impl.solr;
import static org.alfresco.util.SearchDateConversion.parseDateInterval; 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.error.AlfrescoRuntimeException;
import org.alfresco.opencmis.dictionary.CMISStrictDictionaryService; import org.alfresco.opencmis.dictionary.CMISStrictDictionaryService;
import org.alfresco.repo.admin.RepositoryState; 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.beans.factory.InitializingBean;
import org.springframework.extensions.surf.util.I18NUtil; 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 * @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.other=").append(encoder.encode(""+searchParameters.getRange().getOther(), "UTF-8"));
} }
url.append("&facet.range.hardend=").append(encoder.encode(""+searchParameters.getRange().isHardend(), "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<String> 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));
}
}
} }
} }

View File

@@ -37,6 +37,7 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
@@ -441,7 +442,13 @@ public class SolrQueryHTTPClientTest
assertTrue(url.contains("&facet.range.other=before")); assertTrue(url.contains("&facet.range.other=before"));
assertTrue(url.contains("&facet.range.hardend=true")); assertTrue(url.contains("&facet.range.hardend=true"));
RangeParameters range2 = new RangeParameters("content.size", "0", "1000000", "10000", true, null, null, null, null); List<String> filters = new ArrayList<String>();
filters.add("bart");
filters.add("homer");
List<String> tags = new ArrayList<String>();
tags.add("dt");
tags.add("doc");
RangeParameters range2 = new RangeParameters("content.size", "0", "1000000", "10000", true, null, null, tags, filters);
params.setRange(range2); params.setRange(range2);
urlBuilder = new StringBuilder(); urlBuilder = new StringBuilder();
client.buildRangeParameters(params, encoder, urlBuilder); client.buildRangeParameters(params, encoder, urlBuilder);
@@ -454,6 +461,9 @@ public class SolrQueryHTTPClientTest
assertFalse(url2.contains("&facet.range.include=lower")); assertFalse(url2.contains("&facet.range.include=lower"));
assertFalse(url2.contains("&facet.range.other=before")); assertFalse(url2.contains("&facet.range.other=before"));
assertTrue(url2.contains("&facet.range.hardend=true")); 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"));
} }
} }