Search in sources :

Example 6 with ResultSet

use of org.alfresco.service.cmr.search.ResultSet in project alfresco-remote-api by Alfresco.

the class ResultMapperTests method testRange.

@Test
public void testRange() throws Exception {
    ResultSet results = mockResultset(Collections.emptyList(), Collections.emptyList());
    SearchQuery searchQuery = helper.searchQueryFromJson();
    SearchRequestContext searchRequest = SearchRequestContext.from(searchQuery);
    SearchParameters searchParams = searchMapper.toSearchParameters(EMPTY_PARAMS, searchQuery, searchRequest);
    SearchContext searchContext = mapper.toSearchContext((SolrJSONResultSet) results, searchRequest, searchQuery, 0);
    // Numeric facet range
    List<GenericFacetResponse> rangeFacets = searchContext.getFacets().stream().filter(f -> f.getType().equals(FACET_TYPE.range)).collect(Collectors.toList());
    assertEquals(2, rangeFacets.size());
    assertEquals(4, rangeFacets.get(0).getBuckets().size());
    assertEquals("created", rangeFacets.get(0).getLabel());
    assertEquals("[2015-09-29T10:45:15.729Z - 2016-01-07T10:45:15.729Z)", rangeFacets.get(0).getBuckets().get(0).getLabel());
    Object[] metrics1 = rangeFacets.get(0).getBuckets().get(0).getMetrics().toArray();
    assertEquals("0", ((SimpleMetric) metrics1[0]).getValue().get("count"));
    assertEquals("created:[\"2015-09-29T10:45:15.729Z\" TO \"2016-01-07T10:45:15.729Z\">", rangeFacets.get(0).getBuckets().get(0).getFilterQuery());
    assertEquals(null, rangeFacets.get(0).getBuckets().get(0).getBucketInfo().get("count"));
    assertEquals("false", rangeFacets.get(0).getBuckets().get(0).getBucketInfo().get("endInclusive"));
    assertEquals("true", rangeFacets.get(0).getBuckets().get(0).getBucketInfo().get("startInclusive"));
    assertEquals(3, rangeFacets.get(1).getBuckets().size());
    assertEquals("content.size", rangeFacets.get(1).getLabel());
    assertEquals("[0 - 100)", rangeFacets.get(1).getBuckets().get(0).getLabel());
    Object[] metrics = rangeFacets.get(1).getBuckets().get(0).getMetrics().toArray();
    assertEquals("4", ((SimpleMetric) metrics[0]).getValue().get("count"));
    assertEquals("content.size:[\"0\" TO \"100\">", rangeFacets.get(1).getBuckets().get(0).getFilterQuery());
    assertEquals(null, rangeFacets.get(1).getBuckets().get(0).getBucketInfo().get("count"));
    Map<String, String> facetInfo = rangeFacets.get(1).getBuckets().get(0).getBucketInfo();
    assertEquals("0", facetInfo.get("start"));
    assertEquals("100", facetInfo.get("end"));
    assertEquals("[100 - 200)", rangeFacets.get(1).getBuckets().get(1).getLabel());
    metrics = rangeFacets.get(1).getBuckets().get(1).getMetrics().toArray();
    assertEquals("6", ((SimpleMetric) metrics[0]).getValue().get("count"));
    facetInfo = rangeFacets.get(1).getBuckets().get(1).getBucketInfo();
    assertEquals("100", facetInfo.get("start"));
    assertEquals("200", facetInfo.get("end"));
    assertEquals("content.size:[\"100\" TO \"200\">", rangeFacets.get(1).getBuckets().get(1).getFilterQuery());
    assertEquals(null, rangeFacets.get(1).getBuckets().get(1).getBucketInfo().get("count"));
    assertEquals("false", rangeFacets.get(1).getBuckets().get(0).getBucketInfo().get("endInclusive"));
    assertEquals("true", rangeFacets.get(1).getBuckets().get(0).getBucketInfo().get("startInclusive"));
    assertEquals("[200 - 300)", rangeFacets.get(1).getBuckets().get(2).getLabel());
    metrics = rangeFacets.get(1).getBuckets().get(2).getMetrics().toArray();
    assertEquals("3", ((SimpleMetric) metrics[0]).getValue().get("count"));
    facetInfo = rangeFacets.get(1).getBuckets().get(2).getBucketInfo();
    assertEquals("200", facetInfo.get("start"));
    assertEquals("300", facetInfo.get("end"));
    assertEquals("content.size:[\"200\" TO \"300\">", rangeFacets.get(1).getBuckets().get(2).getFilterQuery());
}
Also used : SearchQuery(org.alfresco.rest.api.search.model.SearchQuery) Arrays(java.util.Arrays) SearchContext(org.alfresco.rest.api.search.context.SearchContext) GenericBucket(org.alfresco.repo.search.impl.solr.facet.facetsresponse.GenericBucket) VersionService(org.alfresco.service.cmr.version.VersionService) Matchers.anyBoolean(org.mockito.Matchers.anyBoolean) JSONException(org.json.JSONException) TestCase.assertNotNull(junit.framework.TestCase.assertNotNull) JSONObject(org.json.JSONObject) PercentileMetric(org.alfresco.repo.search.impl.solr.facet.facetsresponse.PercentileMetric) Params(org.alfresco.rest.framework.resource.parameters.Params) Node(org.alfresco.rest.api.model.Node) Map(java.util.Map) METRIC_TYPE(org.alfresco.repo.search.impl.solr.facet.facetsresponse.Metric.METRIC_TYPE) SearchMapper(org.alfresco.rest.api.search.impl.SearchMapper) NodeService(org.alfresco.service.cmr.repository.NodeService) TestCase.assertFalse(junit.framework.TestCase.assertFalse) ResultSet(org.alfresco.service.cmr.search.ResultSet) VersionHistory(org.alfresco.service.cmr.version.VersionHistory) EmptyResultSet(org.alfresco.repo.search.EmptyResultSet) DeletedNodes(org.alfresco.rest.api.DeletedNodes) FacetQueryContext(org.alfresco.rest.api.search.context.FacetQueryContext) Set(java.util.Set) TestCase.assertNull(junit.framework.TestCase.assertNull) Collectors(java.util.stream.Collectors) Serializable(java.io.Serializable) Matchers.any(org.mockito.Matchers.any) List(java.util.List) Version2Model(org.alfresco.repo.version.Version2Model) VersionImpl(org.alfresco.repo.version.common.VersionImpl) Stream(java.util.stream.Stream) EntityNotFoundException(org.alfresco.rest.framework.core.exceptions.EntityNotFoundException) CollectionWithPagingInfo(org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo) TestCase.assertTrue(junit.framework.TestCase.assertTrue) SpellCheckContext(org.alfresco.rest.api.search.context.SpellCheckContext) AuthenticationUtil(org.alfresco.repo.security.authentication.AuthenticationUtil) SearchSQLQuery(org.alfresco.rest.api.search.model.SearchSQLQuery) TestCase.assertEquals(junit.framework.TestCase.assertEquals) Mockito.mock(org.mockito.Mockito.mock) NodeVersionsRelation(org.alfresco.rest.api.nodes.NodeVersionsRelation) LimitBy(org.alfresco.service.cmr.search.LimitBy) TupleList(org.alfresco.rest.api.search.model.TupleList) StoreMapper(org.alfresco.rest.api.search.impl.StoreMapper) BeforeClass(org.junit.BeforeClass) Metric(org.alfresco.repo.search.impl.solr.facet.facetsresponse.Metric) SearchRequestContext(org.alfresco.rest.api.search.context.SearchRequestContext) SimpleMetric(org.alfresco.repo.search.impl.solr.facet.facetsresponse.SimpleMetric) NodeRef(org.alfresco.service.cmr.repository.NodeRef) Version(org.alfresco.service.cmr.version.Version) UserInfo(org.alfresco.rest.api.model.UserInfo) GeneralHighlightParameters(org.alfresco.service.cmr.search.GeneralHighlightParameters) HashMap(java.util.HashMap) Matchers.anyString(org.mockito.Matchers.anyString) ArrayList(java.util.ArrayList) Answer(org.mockito.stubbing.Answer) InvocationOnMock(org.mockito.invocation.InvocationOnMock) ResultMapper(org.alfresco.rest.api.search.impl.ResultMapper) GUID(org.alfresco.util.GUID) QName(org.alfresco.service.namespace.QName) PropertyLookupRegistry(org.alfresco.rest.api.lookups.PropertyLookupRegistry) StoreRef(org.alfresco.service.cmr.repository.StoreRef) NodesImpl(org.alfresco.rest.api.impl.NodesImpl) FieldHighlightParameters(org.alfresco.service.cmr.search.FieldHighlightParameters) JSONTokener(org.json.JSONTokener) Matchers.notNull(org.mockito.Matchers.notNull) ServiceRegistry(org.alfresco.service.ServiceRegistry) IOException(java.io.IOException) HighlightEntry(org.alfresco.rest.api.search.model.HighlightEntry) Test(org.junit.Test) Mockito.when(org.mockito.Mockito.when) FacetFieldContext(org.alfresco.rest.api.search.context.FacetFieldContext) PersonPropertyLookup(org.alfresco.rest.api.lookups.PersonPropertyLookup) FACET_TYPE(org.alfresco.repo.search.impl.solr.facet.facetsresponse.GenericFacetResponse.FACET_TYPE) SearchQuery(org.alfresco.rest.api.search.model.SearchQuery) WebScriptRequest(org.springframework.extensions.webscripts.WebScriptRequest) ListMetric(org.alfresco.repo.search.impl.solr.facet.facetsresponse.ListMetric) SearchParameters(org.alfresco.service.cmr.search.SearchParameters) Collections(java.util.Collections) SolrJSONResultSet(org.alfresco.repo.search.impl.lucene.SolrJSONResultSet) JSONArray(org.json.JSONArray) GenericFacetResponse(org.alfresco.repo.search.impl.solr.facet.facetsresponse.GenericFacetResponse) GenericFacetResponse(org.alfresco.repo.search.impl.solr.facet.facetsresponse.GenericFacetResponse) SearchContext(org.alfresco.rest.api.search.context.SearchContext) Matchers.anyString(org.mockito.Matchers.anyString) SearchRequestContext(org.alfresco.rest.api.search.context.SearchRequestContext) SearchParameters(org.alfresco.service.cmr.search.SearchParameters) ResultSet(org.alfresco.service.cmr.search.ResultSet) EmptyResultSet(org.alfresco.repo.search.EmptyResultSet) SolrJSONResultSet(org.alfresco.repo.search.impl.lucene.SolrJSONResultSet) SimpleMetric(org.alfresco.repo.search.impl.solr.facet.facetsresponse.SimpleMetric) JSONObject(org.json.JSONObject) Test(org.junit.Test)

Example 7 with ResultSet

use of org.alfresco.service.cmr.search.ResultSet in project alfresco-remote-api by Alfresco.

the class ResultMapperTests method testFacetingGroupResponse.

@Test
public /**
 * Test facet group with out facet fields
 * @throws Exception
 */
void testFacetingGroupResponse() throws Exception {
    String jsonQuery = "{\"query\": {\"query\": \"alfresco\"}," + "\"facetQueries\": [" + "{\"query\": \"content.size:[o TO 102400]\", \"label\": \"small\",\"group\":\"foo\"}," + "{\"query\": \"content.size:[102400 TO 1048576]\", \"label\": \"medium\",\"group\":\"foo\"}," + "{\"query\": \"content.size:[1048576 TO 16777216]\", \"label\": \"large\",\"group\":\"foo\"}]" + "}";
    String expectedResponse = "{\"responseHeader\":{\"status\":0,\"QTime\":9},\"_original_parameters_\":\"org.apache.solr.common.params.DefaultSolrParams:{params(df=TEXT&alternativeDic=DEFAULT_DICTIONARY&fl=DBID,score&start=0&fq={!afts}AUTHORITY_FILTER_FROM_JSON&fq={!afts}TENANT_FILTER_FROM_JSON&rows=1000&locale=en_US&wt=json),defaults(carrot.url=id&spellcheck.collateExtendedResults=true&carrot.produceSummary=true&spellcheck.maxCollations=3&spellcheck.maxCollationTries=5&spellcheck.alternativeTermCount=2&spellcheck.extendedResults=false&defType=afts&spellcheck.maxResultsForSuggest=5&spellcheck=false&carrot.outputSubClusters=false&spellcheck.count=5&carrot.title=mltext@m___t@{http://www.alfresco.org/model/content/1.0}title&carrot.snippet=content@s___t@{http://www.alfresco.org/model/content/1.0}content&spellcheck.collate=true)}\",\"_field_mappings_\":{},\"_date_mappings_\":{},\"_range_mappings_\":{},\"_pivot_mappings_\":{},\"_interval_mappings_\":{},\"_stats_field_mappings_\":{},\"_stats_facet_mappings_\":{},\"_facet_function_mappings_\":{},\"response\":{\"numFound\":6,\"start\":0,\"maxScore\":0.7849362,\"docs\":[{\"DBID\":565,\"score\":0.7849362},{\"DBID\":566,\"score\":0.7849362},{\"DBID\":521,\"score\":0.3540957},{\"DBID\":514,\"score\":0.33025497},{\"DBID\":420,\"score\":0.32440513},{\"DBID\":415,\"score\":0.2780319}]}," + "\"spellcheck\":{\"searchInsteadFor\":\"alfresco\"}," + "\"facet_counts\":{\"facet_queries\": {\"small\": 52,\"large\": 0,\"medium\": 0}}," + "\"processedDenies\":true, \"lastIndexedTx\":34}";
    ResultSet results = mockResultset(expectedResponse);
    SearchQuery searchQuery = helper.extractFromJson(jsonQuery);
    SearchRequestContext searchRequest = SearchRequestContext.from(searchQuery);
    SearchContext searchContext = mapper.toSearchContext((SolrJSONResultSet) results, searchRequest, searchQuery, 0);
    assertEquals(34l, searchContext.getConsistency().getlastTxId());
    assertEquals(null, searchContext.getFacetQueries());
    assertEquals(1, searchContext.getFacets().size());
    assertEquals(3, searchContext.getFacets().get(0).getBuckets().size());
    assertEquals("small", searchContext.getFacets().get(0).getBuckets().get(0).getLabel());
    assertEquals("content.size:[o TO 102400]", searchContext.getFacets().get(0).getBuckets().get(0).getFilterQuery());
    assertFalse(searchContext.getFacets().get(0).getBuckets().get(0).getMetrics().isEmpty());
    Metric[] metrics = searchContext.getFacets().get(0).getBuckets().get(0).getMetrics().toArray(new Metric[searchContext.getFacets().get(0).getBuckets().get(0).getMetrics().size()]);
    assertEquals(METRIC_TYPE.count, metrics[0].getType());
    assertEquals("{count=52}", metrics[0].getValue().toString());
}
Also used : SearchQuery(org.alfresco.rest.api.search.model.SearchQuery) ResultSet(org.alfresco.service.cmr.search.ResultSet) EmptyResultSet(org.alfresco.repo.search.EmptyResultSet) SolrJSONResultSet(org.alfresco.repo.search.impl.lucene.SolrJSONResultSet) SearchContext(org.alfresco.rest.api.search.context.SearchContext) PercentileMetric(org.alfresco.repo.search.impl.solr.facet.facetsresponse.PercentileMetric) Metric(org.alfresco.repo.search.impl.solr.facet.facetsresponse.Metric) SimpleMetric(org.alfresco.repo.search.impl.solr.facet.facetsresponse.SimpleMetric) ListMetric(org.alfresco.repo.search.impl.solr.facet.facetsresponse.ListMetric) Matchers.anyString(org.mockito.Matchers.anyString) SearchRequestContext(org.alfresco.rest.api.search.context.SearchRequestContext) Test(org.junit.Test)

Example 8 with ResultSet

use of org.alfresco.service.cmr.search.ResultSet in project alfresco-remote-api by Alfresco.

the class PatchThumbnailsAsRenditionsGet method executeImpl.

@Override
public Map<String, Object> executeImpl(WebScriptRequest req, Status status, Cache cache) {
    if (logger.isInfoEnabled()) {
        logger.debug("Patching legacy thumbnails by applying appropriate rendition aspect");
    }
    List<NodeRef> resultNodeRefs = null;
    ResultSet types = null;
    try {
        types = searchService.query(SPACES_STORE, SearchService.LANGUAGE_LUCENE, QUERY);
        resultNodeRefs = types.getNodeRefs();
    } finally {
        if (types != null) {
            types.close();
        }
    }
    long patchedNodeRefs = 0;
    for (NodeRef nodeRef : resultNodeRefs) {
        if (nodeService.exists(nodeRef) == false || renditionService.isRendition(nodeRef)) {
            continue;
        }
        // Now add one of the two aspects depending on parent location.
        ChildAssociationRef sourceNode = renditionService.getSourceNode(nodeRef);
        ChildAssociationRef primaryParent = nodeService.getPrimaryParent(nodeRef);
        QName aspectToApply;
        if (primaryParent.getParentRef().equals(sourceNode.getParentRef())) {
            aspectToApply = RenditionModel.ASPECT_HIDDEN_RENDITION;
        } else {
            aspectToApply = RenditionModel.ASPECT_VISIBLE_RENDITION;
        }
        if (logger.isDebugEnabled()) {
            StringBuilder msg = new StringBuilder();
            msg.append("Applying aspect ").append(aspectToApply).append(" to node ").append(nodeRef);
            logger.debug(msg.toString());
        }
        nodeService.addAspect(nodeRef, aspectToApply, null);
        patchedNodeRefs++;
    }
    Map<String, Object> model = new HashMap<String, Object>();
    model.put("patchedNodeCount", new Long(patchedNodeRefs));
    return model;
}
Also used : NodeRef(org.alfresco.service.cmr.repository.NodeRef) HashMap(java.util.HashMap) QName(org.alfresco.service.namespace.QName) ResultSet(org.alfresco.service.cmr.search.ResultSet) ChildAssociationRef(org.alfresco.service.cmr.repository.ChildAssociationRef)

Example 9 with ResultSet

use of org.alfresco.service.cmr.search.ResultSet in project alfresco-remote-api by Alfresco.

the class KeywordSearch method search.

/**
 * Execute the search
 */
private SearchResult search(String searchTerms, int startPage, int itemsPerPage, Locale locale, WebScriptRequest req) {
    SearchResult searchResult = null;
    ResultSet results = null;
    try {
        // construct search statement
        String[] terms = searchTerms.split(" ");
        searchTerms = searchTerms.replaceAll("\"", "&quot;");
        // Escape special characters in the terms, so that they can't confuse the parser
        for (int i = 0; i < terms.length; i++) {
            terms[i] = SearchLanguageConversion.escapeLuceneQuery(terms[i]);
        }
        Map<String, Object> statementModel = new HashMap<String, Object>(7, 1.0f);
        statementModel.put("args", createArgs(req));
        statementModel.put("terms", terms);
        Writer queryWriter = new StringWriter(1024);
        renderFormatTemplate(QUERY_FORMAT, statementModel, queryWriter);
        String query = queryWriter.toString();
        // execute query
        if (logger.isDebugEnabled()) {
            logger.debug("Search parameters: searchTerms=" + searchTerms + ", startPage=" + startPage + ", itemsPerPage=" + itemsPerPage + ", search locale=" + locale.toString());
            logger.debug("Issuing lucene search: " + query);
        }
        SearchParameters parameters = new SearchParameters();
        parameters.addStore(SEARCH_STORE);
        parameters.setLanguage(SearchService.LANGUAGE_LUCENE);
        parameters.setQuery(query);
        if (locale != null) {
            parameters.addLocale(locale);
        }
        results = searchService.query(parameters);
        int totalResults = results.length();
        if (logger.isDebugEnabled())
            logger.debug("Results: " + totalResults + " rows (limited: " + results.getResultSetMetaData().getLimitedBy() + ")");
        // are we out-of-range
        int totalPages = (totalResults / itemsPerPage);
        totalPages += (totalResults % itemsPerPage != 0) ? 1 : 0;
        if (totalPages != 0 && (startPage < 1 || startPage > totalPages)) {
            throw new WebScriptException("Start page " + startPage + " is outside boundary of " + totalPages + " pages");
        }
        // construct search result
        searchResult = new SearchResult();
        searchResult.setSearchTerms(searchTerms);
        searchResult.setLocale(locale);
        searchResult.setItemsPerPage(itemsPerPage);
        searchResult.setStartPage(startPage);
        searchResult.setTotalResults(totalResults);
        if (totalResults == 0) {
            searchResult.setTotalPages(0);
            searchResult.setStartIndex(0);
            searchResult.setTotalPageItems(0);
        } else {
            searchResult.setTotalPages(totalPages);
            searchResult.setStartIndex(((startPage - 1) * itemsPerPage) + 1);
            searchResult.setTotalPageItems(Math.min(itemsPerPage, totalResults - searchResult.getStartIndex() + 1));
        }
        SearchTemplateNode[] nodes = new SearchTemplateNode[searchResult.getTotalPageItems()];
        for (int i = 0; i < searchResult.getTotalPageItems(); i++) {
            NodeRef node = results.getNodeRef(i + searchResult.getStartIndex() - 1);
            // Make the search resilient to invalid nodes
            if (!nodeService.exists(node)) {
                continue;
            }
            float score = results.getScore(i + searchResult.getStartIndex() - 1);
            nodes[i] = new SearchTemplateNode(node, score);
        }
        searchResult.setResults(nodes);
        return searchResult;
    } finally {
        if (results != null) {
            results.close();
        }
    }
}
Also used : HashMap(java.util.HashMap) SearchParameters(org.alfresco.service.cmr.search.SearchParameters) NodeRef(org.alfresco.service.cmr.repository.NodeRef) StringWriter(java.io.StringWriter) WebScriptException(org.springframework.extensions.webscripts.WebScriptException) ResultSet(org.alfresco.service.cmr.search.ResultSet) StringWriter(java.io.StringWriter) Writer(java.io.Writer)

Example 10 with ResultSet

use of org.alfresco.service.cmr.search.ResultSet in project alfresco-remote-api by Alfresco.

the class ForumTopicsFilteredGet method doSearch.

/**
 * Do the actual search
 *
 * @param searchQuery Pair with query string in first and query language in second
 * @param sortAscending boolean
 * @param paging PagingRequest
 */
protected PagingResults<TopicInfo> doSearch(Pair<String, String> searchQuery, boolean sortAscending, PagingRequest paging) {
    ResultSet resultSet = null;
    PagingResults<TopicInfo> pagedResults = new EmptyPagingResults<TopicInfo>();
    String sortOn = "@{http://www.alfresco.org/model/content/1.0}created";
    // Setup the search parameters
    SearchParameters sp = new SearchParameters();
    sp.addStore(SPACES_STORE);
    sp.setQuery(searchQuery.getFirst());
    sp.setLanguage(searchQuery.getSecond());
    sp.addSort(sortOn, sortAscending);
    if (paging.getMaxItems() > 0) {
        // Multiply maxItems by 10.  This is to catch topics that have multiple replies and ensure that the maximum number of topics is shown.
        sp.setLimit(paging.getMaxItems() * 10);
        sp.setLimitBy(LimitBy.FINAL_SIZE);
    }
    if (paging.getSkipCount() > 0) {
        sp.setSkipCount(paging.getSkipCount());
    }
    try {
        resultSet = searchService.query(sp);
        pagedResults = wrap(resultSet, paging);
    } finally {
        try {
            resultSet.close();
        } catch (Exception e) {
        // do nothing
        }
    }
    return pagedResults;
}
Also used : SearchParameters(org.alfresco.service.cmr.search.SearchParameters) ResultSet(org.alfresco.service.cmr.search.ResultSet) EmptyPagingResults(org.alfresco.query.EmptyPagingResults) TopicInfo(org.alfresco.service.cmr.discussion.TopicInfo) WebScriptException(org.springframework.extensions.webscripts.WebScriptException)

Aggregations

ResultSet (org.alfresco.service.cmr.search.ResultSet)34 NodeRef (org.alfresco.service.cmr.repository.NodeRef)20 SearchParameters (org.alfresco.service.cmr.search.SearchParameters)20 EmptyResultSet (org.alfresco.repo.search.EmptyResultSet)12 SolrJSONResultSet (org.alfresco.repo.search.impl.lucene.SolrJSONResultSet)12 SearchRequestContext (org.alfresco.rest.api.search.context.SearchRequestContext)11 Test (org.junit.Test)11 SearchQuery (org.alfresco.rest.api.search.model.SearchQuery)10 ArrayList (java.util.ArrayList)9 SearchContext (org.alfresco.rest.api.search.context.SearchContext)9 Matchers.anyString (org.mockito.Matchers.anyString)9 IOException (java.io.IOException)8 HashMap (java.util.HashMap)8 ListMetric (org.alfresco.repo.search.impl.solr.facet.facetsresponse.ListMetric)8 Metric (org.alfresco.repo.search.impl.solr.facet.facetsresponse.Metric)8 PercentileMetric (org.alfresco.repo.search.impl.solr.facet.facetsresponse.PercentileMetric)8 SimpleMetric (org.alfresco.repo.search.impl.solr.facet.facetsresponse.SimpleMetric)8 QName (org.alfresco.service.namespace.QName)8 NodeService (org.alfresco.service.cmr.repository.NodeService)7 List (java.util.List)6