mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged 5.2.N (5.2.2) to HEAD (5.2)
136096 gjames: Merged searchbcr (5.2.1) to 5.2.N (5.2.1) 135842 gjames: SEARCH-376: Adding the includeRequest parameter git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@137468 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -25,6 +25,8 @@
|
||||
*/
|
||||
package org.alfresco.rest.api.search.context;
|
||||
|
||||
import org.alfresco.rest.api.search.model.SearchQuery;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -37,10 +39,13 @@ public class SearchContext
|
||||
private final SpellCheckContext spellCheck;
|
||||
private final List<FacetFieldContext> facetsFields;
|
||||
private final List<FacetFieldContext> facetIntervals;
|
||||
private final SearchQuery request;
|
||||
|
||||
public SearchContext(long lastTxId, List<FacetQueryContext> facetQueries, List<FacetFieldContext> facetsFields, List<FacetFieldContext> facetIntervals, SpellCheckContext spellCheck)
|
||||
public SearchContext(long lastTxId, List<FacetQueryContext> facetQueries, List<FacetFieldContext> facetsFields, List<FacetFieldContext> facetIntervals, SpellCheckContext spellCheck,
|
||||
SearchQuery request)
|
||||
{
|
||||
this.spellCheck = spellCheck;
|
||||
this.request = request;
|
||||
if (lastTxId > 0)
|
||||
{
|
||||
consistency = new Consistency(lastTxId);
|
||||
@@ -79,6 +84,11 @@ public class SearchContext
|
||||
return facetsFields;
|
||||
}
|
||||
|
||||
public SearchQuery getRequest()
|
||||
{
|
||||
return request;
|
||||
}
|
||||
|
||||
public class Consistency
|
||||
{
|
||||
private final long lastTxId;
|
||||
|
@@ -281,7 +281,7 @@ public class ResultMapper
|
||||
for (Entry<String, Integer> fq:facetQueries.entrySet())
|
||||
{
|
||||
String filterQuery = null;
|
||||
if (searchQuery != null)
|
||||
if (searchQuery != null && searchQuery.getFacetQueries() != null)
|
||||
{
|
||||
Optional<FacetQuery> found = searchQuery.getFacetQueries().stream().filter(facetQuery -> fq.getKey().equals(facetQuery.getLabel())).findFirst();
|
||||
filterQuery = found.isPresent()? found.get().getQuery():fq.getKey();
|
||||
@@ -305,7 +305,7 @@ public class ResultMapper
|
||||
}
|
||||
|
||||
//Put it all together
|
||||
context = new SearchContext(solrResultSet.getLastIndexedTxId(), facetResults, ffcs, intervals, spellCheckContext);
|
||||
context = new SearchContext(solrResultSet.getLastIndexedTxId(), facetResults, ffcs, intervals, spellCheckContext, searchQuery.includeRequest()?searchQuery:null);
|
||||
return isNullContext(context)?null:context;
|
||||
}
|
||||
|
||||
|
@@ -56,12 +56,14 @@ public class SearchQuery
|
||||
private final Limits limits;
|
||||
private final GeneralHighlightParameters highlight;
|
||||
private final IntervalParameters facetIntervals;
|
||||
private final boolean includeRequest;
|
||||
|
||||
public static final SearchQuery EMPTY = new SearchQuery(null, null, null, null, null,null, null, null,null, null, null, null, null, null, null);
|
||||
public static final SearchQuery EMPTY = new SearchQuery(null, null, null, null, null, null,null, null, null,null, null, null, null, null, null, null);
|
||||
|
||||
@JsonCreator
|
||||
public SearchQuery(@JsonProperty("query") Query query,
|
||||
@JsonProperty("paging") Paging paging,
|
||||
@JsonProperty("includeRequest") Boolean includeRequest,
|
||||
@JsonProperty("include") List<String> include,
|
||||
@JsonProperty("fields") List<String> fields,
|
||||
@JsonProperty("sort") List<SortDef> sort,
|
||||
@@ -77,6 +79,7 @@ public class SearchQuery
|
||||
@JsonProperty("facetIntervals")IntervalParameters facetIntervals)
|
||||
{
|
||||
this.query = query;
|
||||
this.includeRequest = includeRequest==null?false:includeRequest;
|
||||
this.paging = paging;
|
||||
this.include = include;
|
||||
this.fields = fields;
|
||||
@@ -166,4 +169,9 @@ public class SearchQuery
|
||||
{
|
||||
return limits;
|
||||
}
|
||||
|
||||
public boolean includeRequest()
|
||||
{
|
||||
return includeRequest;
|
||||
}
|
||||
}
|
||||
|
@@ -230,7 +230,7 @@ public class ResultMapperTests
|
||||
public void testToCollectionWithPagingInfo() throws Exception
|
||||
{
|
||||
ResultSet results = mockResultset(Arrays.asList(514l), Arrays.asList(566l, VERSIONED_ID));
|
||||
CollectionWithPagingInfo<Node> collectionWithPage = mapper.toCollectionWithPagingInfo(EMPTY_PARAMS, null, results);
|
||||
CollectionWithPagingInfo<Node> collectionWithPage = mapper.toCollectionWithPagingInfo(EMPTY_PARAMS, SearchQuery.EMPTY, results);
|
||||
assertNotNull(collectionWithPage);
|
||||
Long found = results.getNumberFound();
|
||||
assertEquals(found.intValue(), collectionWithPage.getTotalItems().intValue());
|
||||
@@ -278,17 +278,21 @@ public class ResultMapperTests
|
||||
assertEquals("last",searchContext.getFacetIntervals().get(0).getBuckets().get(0).getLabel());
|
||||
assertEquals("cm:creator:(a,b]",searchContext.getFacetIntervals().get(0).getBuckets().get(0).getFilterQuery());
|
||||
assertEquals(4,searchContext.getFacetIntervals().get(0).getBuckets().get(0).getCount());
|
||||
|
||||
//Requests search Query
|
||||
assertNotNull(searchContext.getRequest());
|
||||
assertEquals("great", searchContext.getRequest().getQuery().getUserQuery());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIsNullContext() throws Exception
|
||||
{
|
||||
assertTrue(mapper.isNullContext(new SearchContext(0l,null,null,null,null)));
|
||||
assertFalse(mapper.isNullContext(new SearchContext(1l,null,null,null,null)));
|
||||
assertFalse(mapper.isNullContext(new SearchContext(0l,null,null,null,new SpellCheckContext(null, null))));
|
||||
assertFalse(mapper.isNullContext(new SearchContext(0l,Arrays.asList(new FacetQueryContext(null, null, 0)),null,null,null)));
|
||||
assertFalse(mapper.isNullContext(new SearchContext(0l,null,Arrays.asList(new FacetFieldContext(null, null)),null,null)));
|
||||
assertFalse(mapper.isNullContext(new SearchContext(0l,null,null,Arrays.asList(new FacetFieldContext(null, null)),null)));
|
||||
assertTrue(mapper.isNullContext(new SearchContext(0l,null,null,null,null, null)));
|
||||
assertFalse(mapper.isNullContext(new SearchContext(1l,null,null,null,null, null)));
|
||||
assertFalse(mapper.isNullContext(new SearchContext(0l,null,null,null,new SpellCheckContext(null, null), null)));
|
||||
assertFalse(mapper.isNullContext(new SearchContext(0l,Arrays.asList(new FacetQueryContext(null, null, 0)),null,null,null, null)));
|
||||
assertFalse(mapper.isNullContext(new SearchContext(0l,null,Arrays.asList(new FacetFieldContext(null, null)),null,null, null)));
|
||||
assertFalse(mapper.isNullContext(new SearchContext(0l,null,null,Arrays.asList(new FacetFieldContext(null, null)),null, null)));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@@ -652,7 +652,7 @@ public class SearchMapperTests
|
||||
private SearchQuery minimalQuery()
|
||||
{
|
||||
Query query = new Query("cmis", "foo", "");
|
||||
SearchQuery sq = new SearchQuery(query,null, null, null, null, null, null, null, null, null, null, null, null, null, null);
|
||||
SearchQuery sq = new SearchQuery(query, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
|
||||
return sq;
|
||||
}
|
||||
}
|
||||
|
@@ -50,7 +50,6 @@ import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Tests json -> SearchQuery deserialization
|
||||
@@ -174,7 +173,7 @@ public class SearchQuerySerializerTests
|
||||
FacetFieldContext ffc = new FacetFieldContext("theLabel", Arrays.asList(new Bucket("b1", "name:b1", 23, "displayText1"), new Bucket("b2", null, 34, "displayText2")));
|
||||
SearchContext searchContext = new SearchContext(23l, Arrays.asList(new FacetQueryContext("f1", "creator:bob", 15), new FacetQueryContext("f2", null, 20)),
|
||||
Arrays.asList(ffc), null,
|
||||
new SpellCheckContext("aFlag", Arrays.asList("bish", "bash")));
|
||||
new SpellCheckContext("aFlag", Arrays.asList("bish", "bash")), null);
|
||||
CollectionWithPagingInfo<ExecutionResult> coll = CollectionWithPagingInfo.asPaged(null, Arrays.asList(exec1), false, 2, null, searchContext);
|
||||
String out = helper.writeResponse(coll);
|
||||
assertTrue("There must 'context' json output", out.contains("\"context\":{\"consistency\":{\"lastTxId\":23}"));
|
||||
@@ -186,7 +185,7 @@ public class SearchQuerySerializerTests
|
||||
assertTrue("There must 'bucket1' json output", out.contains("{\"label\":\"b1\",\"filterQuery\":\"name:b1\",\"count\":23,\"display\":\"displayText1\"}"));
|
||||
assertTrue("There must 'bucket2' json output", out.contains("{\"label\":\"b2\",\"count\":34,\"display\":\"displayText2\"}"));
|
||||
|
||||
searchContext = new SearchContext(-1, null, null,null, null);
|
||||
searchContext = new SearchContext(-1, null, null,null, null, null);
|
||||
coll = CollectionWithPagingInfo.asPaged(null, Arrays.asList(exec1), false, 2, null, searchContext);
|
||||
out = helper.writeResponse(coll);
|
||||
assertTrue("There must NOT BE a 'context' json output", out.contains("\"context\":{}"));
|
||||
|
@@ -56,6 +56,7 @@ public class SerializerTestHelper implements RequestReader
|
||||
|
||||
public static final String JSON = "{ \"query\": {\"query\": \"g*\",\"userQuery\": \"great\",\"language\": \"afts\"}, "
|
||||
+ "\"paging\": {\"maxItems\": \"99\",\"skipCount\": \"4\"},"
|
||||
+ "\"includeRequest\": true,"
|
||||
+ "\"sort\": {\"type\": \"FIELD\",\"field\": \"cm:title\",\"ascending\": \"true\"},"
|
||||
+ "\"templates\": [{\"name\": \"mytemp\",\"template\": \"ATEMP\"}, {\"name\": \"yourtemp\",\"template\": \"%cm:content\"}],"
|
||||
+ "\"defaults\": {\"namespace\": \"namesp\",\"defaultFieldName\": \"myfield\",\"defaultFTSOperator\": \"AND\", \"textAttributes\": [\"roy\", \"king\"]},"
|
||||
|
Reference in New Issue
Block a user