Example usage for org.apache.solr.client.solrj.response FacetField FacetField

List of usage examples for org.apache.solr.client.solrj.response FacetField FacetField

Introduction

In this page you can find the example usage for org.apache.solr.client.solrj.response FacetField FacetField.

Prototype

public FacetField(final String n) 

Source Link

Usage

From source file:at.pagu.soldockr.core.ResultHelperTest.java

License:Apache License

@Test
public void testConvertFacetQueryResponseForQueryResultWithSingleFacetFieldWithoutValues() {
    List<FacetField> fieldList = new ArrayList<FacetField>(1);
    FacetField ffield = new FacetField("field_1");
    fieldList.add(ffield);/* w ww . j ava 2 s  . c om*/

    Mockito.when(response.getFacetFields()).thenReturn(fieldList);

    Map<Field, Page<FacetEntry>> result = ResultHelper
            .convertFacetQueryResponseToFacetPageMap(createFacetQuery("field_1"), response);
    Assert.assertNotNull(result);
    Assert.assertEquals(1, result.size());
    Entry<Field, Page<FacetEntry>> resultEntry = result.entrySet().iterator().next();

    Assert.assertEquals(ffield.getName(), resultEntry.getKey().getName());
    Assert.assertTrue(resultEntry.getValue().getContent().isEmpty());
}

From source file:at.pagu.soldockr.core.ResultHelperTest.java

License:Apache License

private FacetField createFacetField(String fieldName, long... values) {
    FacetField ffield = new FacetField(fieldName);
    for (int i = 1; i <= values.length; i++) {
        ffield.add("value_" + i, values[i - 1]);
    }//from www  . j  ava 2 s.c o m
    return ffield;
}

From source file:com.github.fengtan.sophie.tables.DocumentsTable.java

License:Open Source License

/**
 * Add new field to the table. No values are provided to the filter.
 * //from   w ww .j av  a 2s . c om
 * @param fieldName
 *            Field name.
 * @param field
 *            Field definition.
 */
public void addField(String fieldName, FieldInfo field) {
    FacetField facet = new FacetField(fieldName);
    int index = table.getColumnCount();
    addField(fieldName, field, facet, index);
}

From source file:eu.europeana.corelib.search.utils.SearchUtils.java

License:Creative Commons License

/**
 * The QueryFacets are in this form:/*from w ww  .  j  a  v a 2s  . com*/
 * {!id=REUSABILITY:Limited}RIGHTS:(http\:\
 * /\/creativecommons.org\/licenses\/by-nc\/* OR
 * http\:\/\/creativecommons.org\/licenses\/by-nc-sa\/* OR
 * http\:\/\/creativecommons.org\/licenses\/by-nc-nd\/* OR
 * http\:\/\/creativecommons.org\/licenses\/by-nd\/* OR
 * http\:\/\/www.europeana.eu\/rights\/out-of-copyright-non-commercial\/*)
 *
 * this function creates a hierarchy: REUSABILITY Limited: x Free: y ...
 *
 * @param queryFacets
 * @return
 */
public static List<FacetField> extractQueryFacets(Map<String, Integer> queryFacets) {
    Map<String, FacetField> map = new HashMap<>();
    for (String query : queryFacets.keySet()) {
        Matcher matcher = ID_PATTERN.matcher(query);
        if (!matcher.find()) {
            continue;
        }
        String field = matcher.group(1);
        String value = matcher.group(2);
        if (!map.containsKey(field)) {
            map.put(field, new FacetField(field));
        }
        map.get(field).add(value, queryFacets.get(query));
    }
    return new ArrayList<>(map.values());
}

From source file:fr.paris.lutece.plugins.search.solr.business.SolrSearchEngine.java

License:Open Source License

/**
 * Return the result with facets. Does NOT support authentification yet.
 * @param strQuery the query//from   w ww.jav  a 2  s .co  m
 * @param facetQueries The selected facets
 * @param sortName The facet name to sort by
 * @param sortOrder "asc" or "desc"
 * @param nLimit Maximal number of results.
 * @return the result with facets
 */
public SolrFacetedResult getFacetedSearchResults(String strQuery, String[] facetQueries, String sortName,
        String sortOrder, int nLimit, int nCurrentPageIndex, int nItemsPerPage, Boolean bSpellCheck) {
    SolrFacetedResult facetedResult = new SolrFacetedResult();

    SolrClient solrServer = SolrServerService.getInstance().getSolrServer();
    List<SolrSearchResult> results = new ArrayList<SolrSearchResult>();
    Hashtable<Field, List<String>> myValuesList = new Hashtable<Field, List<String>>();

    if (solrServer != null) {
        SolrQuery query = new SolrQuery(strQuery);
        query.setHighlight(true);
        query.setHighlightSimplePre(SOLR_HIGHLIGHT_PRE);
        query.setHighlightSimplePost(SOLR_HIGHLIGHT_POST);
        query.setHighlightSnippets(SOLR_HIGHLIGHT_SNIPPETS);
        query.setHighlightFragsize(SOLR_HIGHLIGHT_FRAGSIZE);
        query.setFacet(true);
        query.setFacetLimit(SOLR_FACET_LIMIT);
        //            query.setFacetMinCount( 1 );

        for (Field field : SolrFieldManager.getFacetList().values()) {
            //Add facet Field
            if (field.getEnableFacet()) {
                if (field.getName().equalsIgnoreCase("date")
                        || field.getName().toLowerCase().endsWith("_date")) {
                    query.setParam("facet.date", field.getName());
                    query.setParam("facet.date.start", SOLR_FACET_DATE_START);
                    query.setParam("facet.date.gap", SOLR_FACET_DATE_GAP);
                    query.setParam("facet.date.end", SOLR_FACET_DATE_END);
                    query.setParam("facet.date.mincount", "0");
                } else {
                    query.addFacetField(field.getSolrName());
                    query.setParam("f." + field.getSolrName() + ".facet.mincount",
                            String.valueOf(field.getFacetMincount()));
                }
                myValuesList.put(field, new ArrayList<String>());
            }
        }

        //Facet intersection
        List<String> treeParam = new ArrayList<String>();

        for (FacetIntersection intersect : SolrFieldManager.getIntersectionlist()) {
            treeParam.add(intersect.getField1().getSolrName() + "," + intersect.getField2().getSolrName());
        }

        //(String []) al.toArray (new String [0]);
        query.setParam("facet.tree", (String[]) treeParam.toArray(new String[0]));
        query.setParam("spellcheck", bSpellCheck);

        //sort order
        if ((sortName != null) && !"".equals(sortName)) {
            if (sortOrder.equals("asc")) {
                query.setSort(sortName, ORDER.asc);
            } else {
                query.setSort(sortName, ORDER.desc);
            }
        } else {
            for (Field field : SolrFieldManager.getSortList()) {
                if (field.getDefaultSort()) {
                    query.setSort(field.getName(), ORDER.desc);
                }
            }
        }

        //Treat HttpRequest
        //FacetQuery
        if (facetQueries != null) {
            for (String strFacetQuery : facetQueries) {
                //                    if ( strFacetQuery.contains( DATE_COLON ) )
                //                    {
                //                        query.addFilterQuery( strFacetQuery );
                //                    }
                //                    else
                //                    {
                String myValues[] = strFacetQuery.split(":", 2);
                if (myValues != null && myValues.length == 2) {
                    myValuesList = getFieldArrange(myValues, myValuesList);
                }
                //strFacetQueryWithColon = strFacetQuery.replaceFirst( SolrConstants.CONSTANT_COLON, COLON_QUOTE );
                //strFacetQueryWithColon += SolrConstants.CONSTANT_QUOTE;
                //                        query.addFilterQuery( strFacetQuery );
                //                    }
            }

            for (Field tmpFieldValue : myValuesList.keySet()) {
                List<String> strValues = myValuesList.get(tmpFieldValue);
                String strFacetString = "";
                if (strValues.size() > 0) {
                    strFacetString = extractQuery(strValues, tmpFieldValue.getOperator());
                    if (tmpFieldValue.getName().equalsIgnoreCase("date")
                            || tmpFieldValue.getName().toLowerCase().endsWith("_date")) {
                        strFacetString = strFacetString.replaceAll("\"", "");
                    }
                    query.addFilterQuery(tmpFieldValue.getName() + ":" + strFacetString);
                }
            }
        }

        try {

            // count query
            query.setRows(0);
            QueryResponse response = solrServer.query(query);

            int nResults = (int) response.getResults().getNumFound();
            facetedResult.setCount(nResults > nLimit ? nLimit : nResults);

            query.setStart((nCurrentPageIndex - 1) * nItemsPerPage);
            query.setRows(nItemsPerPage > nLimit ? nLimit : nItemsPerPage);

            query.setParam("defType", DEF_TYPE);
            String strWeightValue = generateQueryWeightValue();
            query.setParam("qf", strWeightValue);

            response = solrServer.query(query);

            //HighLight
            Map<String, Map<String, List<String>>> highlightsMap = response.getHighlighting();
            SolrHighlights highlights = null;

            if (highlightsMap != null) {
                highlights = new SolrHighlights(highlightsMap);
            }

            //resultList
            List<SolrItem> itemList = response.getBeans(SolrItem.class);
            results = SolrUtil.transformSolrItemsToSolrSearchResults(itemList, highlights);

            //set the spellcheckresult
            facetedResult.setSolrSpellCheckResponse(response.getSpellCheckResponse());

            //Date facet
            if ((response.getFacetDates() != null) && !response.getFacetDates().isEmpty()) {
                facetedResult.setFacetDateList(response.getFacetDates());
            }

            //FacetField
            facetedResult.setFacetFields(response.getFacetFields());

            //Facet intersection (facet tree)
            NamedList<Object> resp = (NamedList<Object>) response.getResponse().get("facet_counts");

            if (resp != null) {
                NamedList<NamedList<NamedList<Integer>>> trees = (NamedList<NamedList<NamedList<Integer>>>) resp
                        .get("trees");
                Map<String, ArrayList<FacetField>> treesResult = new HashMap<String, ArrayList<FacetField>>();

                if (trees != null) {
                    for (Entry<String, NamedList<NamedList<Integer>>> selectedFacet : trees) { //Selected Facet (ex : type,categorie )
                                                                                               //System.out.println(selectedFacet.getKey());

                        ArrayList<FacetField> facetFields = new ArrayList<FacetField>(
                                selectedFacet.getValue().size());

                        for (Entry<String, NamedList<Integer>> facetField : selectedFacet.getValue()) {
                            FacetField ff = new FacetField(facetField.getKey());

                            //System.out.println("\t" + facetField.getKey());
                            for (Entry<String, Integer> value : facetField.getValue()) { // Second Level
                                ff.add(value.getKey(), value.getValue());

                                //System.out.println("\t\t" + value.getKey() + " : " + value.getValue());
                            }

                            facetFields.add(ff);
                        }

                        treesResult.put(selectedFacet.getKey(), facetFields);
                    }
                }

                facetedResult.setFacetIntersection(treesResult);
            }
        } catch (SolrServerException e) {
            AppLogService.error(e.getMessage(), e);
        } catch (IOException e) {
            AppLogService.error(e.getMessage(), e);
        }
    } else {
        facetedResult.setFacetFields(new ArrayList<FacetField>());
    }

    facetedResult.setSolrSearchResults(results);

    return facetedResult;
}

From source file:org.apache.jackrabbit.core.query.lucene.FacetHandler.java

License:Open Source License

private void extractFacetInfo(NamedList<Object> info, SolrParams solrParams) {
    // Parse the queries
    _facetQuery = new LinkedHashMap<String, Long>();
    NamedList<Long> fq = (NamedList<Long>) info.get("facet_queries");
    if (fq != null) {
        for (Map.Entry<String, Long> entry : fq) {
            _facetQuery.put(entry.getKey(), entry.getValue());
        }/* ww  w . j av a  2 s. c o  m*/
    }

    // Parse the facet info into fields
    // TODO?? The list could be <int> or <long>? If always <long> then we can switch to <Long>
    NamedList<NamedList<Number>> ff = (NamedList<NamedList<Number>>) info.get("facet_fields");
    Map<String, FieldType> fieldTypeMap = new HashMap<>();
    if (ff != null) {
        _facetFields = new ArrayList<FacetField>(ff.size());
        _limitingFacets = new ArrayList<FacetField>(ff.size());
        long minsize = totalSize;
        for (Map.Entry<String, NamedList<Number>> facet : ff) {
            String key = StringUtils.substringBeforeLast(facet.getKey(),
                    SimpleJahiaJcrFacets.PROPNAME_INDEX_SEPARATOR);
            String fieldInIndex = StringUtils.substringAfterLast(facet.getKey(),
                    SimpleJahiaJcrFacets.PROPNAME_INDEX_SEPARATOR);
            FacetField f = new FacetField(key);
            if (!fieldTypeMap.containsKey(key)) {
                try {
                    //Find a key like f.field_name#unknownumber.facet.nodetype
                    Pattern facetNodetype = Pattern.compile("f\\." + key + "#[0-9]+\\.facet\\.nodetype");
                    String nodetypeName = null;
                    Iterator<String> parameterNamesIterator = solrParams.getParameterNamesIterator();
                    while (parameterNamesIterator.hasNext()) {
                        String next = parameterNamesIterator.next();
                        if (facetNodetype.matcher(next).matches()) {
                            nodetypeName = solrParams.get(next);
                            break;
                        }
                    }
                    ExtendedPropertyDefinition epd = NodeTypeRegistry.getInstance().getNodeType(nodetypeName)
                            .getPropertyDefinition(key);
                    fieldTypeMap.put(key, getType(epd));
                } catch (NoSuchNodeTypeException e) {
                    log.error(e.getMessage(), e);
                }
            }
            for (Map.Entry<String, Number> entry : facet.getValue()) {
                String facetValue = entry.getKey();
                String query = fieldTypeMap.get(key).toInternal(entry.getKey());
                Matcher matcher = valueWithQuery.matcher(facetValue);
                if (matcher.matches()) {
                    query = matcher.group(2);
                    facetValue = matcher.replaceFirst("$1");
                }
                f.add(facetValue, entry.getValue().longValue());
                f.getValues().get(f.getValueCount() - 1).setFilterQuery(
                        ClientUtils.escapeQueryChars(fieldInIndex) + ":" + ClientUtils.escapeQueryChars(query));
            }

            _facetFields.add(f);
            FacetField nl = f.getLimitingFields(minsize);
            if (nl.getValueCount() > 0) {
                _limitingFacets.add(nl);
            }
        }
    }

    // Parse date facets
    NamedList<NamedList<Object>> df = (NamedList<NamedList<Object>>) info.get("facet_dates");
    if (df != null) {
        // System.out.println(df);
        _facetDates = new ArrayList<FacetField>(df.size());
        for (Map.Entry<String, NamedList<Object>> facet : df) {
            // System.out.println("Key: " + facet.getKey() + " Value: " + facet.getValue());
            NamedList<Object> values = facet.getValue();
            String gap = (String) values.get("gap");
            Date end = (Date) values.get("end");
            FacetField f = new FacetField(StringUtils.substringBeforeLast(facet.getKey(),
                    SimpleJahiaJcrFacets.PROPNAME_INDEX_SEPARATOR), gap, end);

            for (Map.Entry<String, Object> entry : values) {
                try {
                    String key = StringUtils.substringBeforeLast(entry.getKey(),
                            SimpleJahiaJcrFacets.PROPNAME_INDEX_SEPARATOR);
                    String query = StringUtils.substringAfterLast(entry.getKey(),
                            SimpleJahiaJcrFacets.PROPNAME_INDEX_SEPARATOR);
                    f.add(key, Long.parseLong(entry.getValue().toString()));
                    if (!StringUtils.isEmpty(query)) {
                        String rangePrefix = null;
                        if (query.contains(RANGEFROM_EXCLUSIVE_PREFIX)) {
                            rangePrefix = RANGEFROM_EXCLUSIVE_PREFIX;
                        } else if (query.contains(RANGEFROM_INCLUSIVE_PREFIX)) {
                            rangePrefix = RANGEFROM_INCLUSIVE_PREFIX;
                        }
                        if (!StringUtils.isEmpty(rangePrefix)) {
                            f.getValues().get(f.getValueCount() - 1)
                                    .setFilterQuery(ClientUtils
                                            .escapeQueryChars(StringUtils.substringBefore(query, rangePrefix))
                                            + rangePrefix + StringUtils.substringAfter(query, rangePrefix));
                        }
                    }
                } catch (NumberFormatException e) {
                    // Ignore for non-number responses which are already handled above
                }
            }

            _facetDates.add(f);
        }
    }

    // Parse range facets
    NamedList<NamedList<Object>> rf = (NamedList<NamedList<Object>>) info.get("facet_ranges");
    if (rf != null) {
        // System.out.println(df);
        _facetRanges = new ArrayList<RangeFacet>(rf.size());
        for (Map.Entry<String, NamedList<Object>> facet : rf) {
            NamedList<Object> values = facet.getValue();
            Object rawGap = values.get("gap");

            RangeFacet rangeFacet;
            if (rawGap instanceof Number) {
                Number gap = (Number) rawGap;
                Number start = (Number) values.get("start");
                Number end = (Number) values.get("end");

                Number before = (Number) values.get("before");
                Number after = (Number) values.get("after");

                rangeFacet = new RangeFacet.Numeric(StringUtils.substringBeforeLast(facet.getKey(),
                        SimpleJahiaJcrFacets.PROPNAME_INDEX_SEPARATOR), start, end, gap, before, after);
            } else {
                String gap = (String) rawGap;
                Date start = (Date) values.get("start");
                Date end = (Date) values.get("end");

                Number before = (Number) values.get("before");
                Number after = (Number) values.get("after");

                rangeFacet = new RangeFacet.Date(StringUtils.substringBeforeLast(facet.getKey(),
                        SimpleJahiaJcrFacets.PROPNAME_INDEX_SEPARATOR), start, end, gap, before, after);
            }

            NamedList<Integer> counts = (NamedList<Integer>) values.get("counts");
            for (Map.Entry<String, Integer> entry : counts) {
                try {
                    String key = StringUtils.substringBeforeLast(entry.getKey(),
                            SimpleJahiaJcrFacets.PROPNAME_INDEX_SEPARATOR);
                    String query = StringUtils.substringAfterLast(entry.getKey(),
                            SimpleJahiaJcrFacets.PROPNAME_INDEX_SEPARATOR);

                    rangeFacet.addCount(key, entry.getValue());

                    if (!StringUtils.isEmpty(query)) {
                        String rangePrefix = null;
                        if (query.contains(RANGEFROM_EXCLUSIVE_PREFIX)) {
                            rangePrefix = RANGEFROM_EXCLUSIVE_PREFIX;
                        } else if (query.contains(RANGEFROM_INCLUSIVE_PREFIX)) {
                            rangePrefix = RANGEFROM_INCLUSIVE_PREFIX;
                        }
                        if (!StringUtils.isEmpty(rangePrefix)) {
                            ((RangeFacet.Count) rangeFacet.getCounts().get(rangeFacet.getCounts().size() - 1))
                                    .setFilterQuery(ClientUtils
                                            .escapeQueryChars(StringUtils.substringBefore(query, rangePrefix))
                                            + rangePrefix + StringUtils.substringAfter(query, rangePrefix));
                        }
                    }
                } catch (NumberFormatException e) {
                    // Ignore for non-number responses which are already handled above
                }
            }

            _facetRanges.add(rangeFacet);
        }
    }
}

From source file:org.apache.metron.solr.dao.SolrSearchDaoTest.java

License:Apache License

@Test
public void getFacetCountsShouldProperlyReturnFacetCounts() {
    QueryResponse queryResponse = mock(QueryResponse.class);

    FacetField facetField1 = new FacetField("field1");
    facetField1.add("value1", 1);
    facetField1.add("value2", 2);
    FacetField facetField2 = new FacetField("field2");
    facetField2.add("value3", 3);
    facetField2.add("value4", 4);
    when(queryResponse.getFacetField("field1")).thenReturn(facetField1);
    when(queryResponse.getFacetField("field2")).thenReturn(facetField2);

    Map<String, Map<String, Long>> expectedFacetCounts = new HashMap<String, Map<String, Long>>() {
        {/*from  www  . ja va2  s  .c  om*/
            put("field1", new HashMap<String, Long>() {
                {
                    put("value1", 1L);
                    put("value2", 2L);
                }
            });
            put("field2", new HashMap<String, Long>() {
                {
                    put("value3", 3L);
                    put("value4", 4L);
                }
            });
        }
    };

    assertEquals(expectedFacetCounts,
            solrSearchDao.getFacetCounts(Arrays.asList("field1", "field2"), queryResponse));
}

From source file:org.mousephenotype.cda.solr.service.ExpressionService.java

License:Apache License

/**
 *
 * @param acc// w  w  w.j  a v  a2s. c  o m
 *            mgi_accession for gene
 * @param topMaNameFilter
 *            Only include images under the top level ma term specified here
 * @param parameterStableId TODO
 * @param imagesOverview
 *            If imagesOverview true then restrict response to only certain
 *            fields as we are only displaying annotations for a dataset not
 *            a specific thumbnail
 * @param imagesOverview
 *            If true we want some images data/stats added to the model for
 *            display in the tabbed pane on the gene page.
 * @throws SolrServerException, IOException
 * @throws SQLException
 */
public ExpressionImagesBean getLacImageDataForGene(String acc, String topMaNameFilter, String parameterStableId,
        boolean imagesOverview) throws SolrServerException, IOException {

    QueryResponse laczResponse = null;
    String noTopTermId = "";
    String topLevelField = "";// type ma or emap imageDTO field for top
    // level terms
    String termIdField = "";
    if (parameterStableId != null && parameterStableId.contains("ELZ")) { // use EMAP terms and top level terms
        noTopTermId = "TS20 embryo or Unassigned";// currently if unassigned they either have embryo TS20 as there EMAP id but our system doesn't find any selected_top_level emap or nothing is assigned but we know they are embryo so assign this id to unassigned
        topLevelField = ImageDTO.SELECTED_TOP_LEVEL_ANATOMY_TERM;
        termIdField = ImageDTO.ANATOMY_ID;
        if (imagesOverview) {
            laczResponse = getEmbryoLaczImageFacetsForGene(acc, parameterStableId, ImageDTO.OMERO_ID,
                    ImageDTO.JPEG_URL, ImageDTO.THUMBNAIL_URL, topLevelField,
                    ImageDTO.PARAMETER_ASSOCIATION_NAME, ImageDTO.PARAMETER_ASSOCIATION_VALUE,
                    ImageDTO.ANATOMY_ID, ImageDTO.ANATOMY_TERM);
        } else {
            laczResponse = getEmbryoLaczImageFacetsForGene(acc, parameterStableId, ImageDTO.OMERO_ID,
                    ImageDTO.JPEG_URL, ImageDTO.THUMBNAIL_URL, topLevelField,
                    ImageDTO.PARAMETER_ASSOCIATION_NAME, ImageDTO.PARAMETER_ASSOCIATION_VALUE,
                    ImageDTO.ZYGOSITY, ImageDTO.SEX, ImageDTO.ALLELE_SYMBOL, ImageDTO.DOWNLOAD_URL,
                    ImageDTO.IMAGE_LINK, ImageDTO.ANATOMY_ID, ImageDTO.ANATOMY_TERM);
        }

    } else {
        noTopTermId = "Unassigned Top Level MA";
        topLevelField = ImageDTO.SELECTED_TOP_LEVEL_ANATOMY_TERM;
        termIdField = ImageDTO.ANATOMY_ID;
        if (imagesOverview) {
            laczResponse = getAdultLaczImageFacetsForGene(acc, parameterStableId, ImageDTO.OMERO_ID,
                    ImageDTO.JPEG_URL, ImageDTO.THUMBNAIL_URL, topLevelField,
                    ImageDTO.PARAMETER_ASSOCIATION_NAME, ImageDTO.PARAMETER_ASSOCIATION_VALUE,
                    ImageDTO.ANATOMY_ID, ImageDTO.UBERON_ID, ImageDTO.EFO_ID);
        } else {
            laczResponse = getAdultLaczImageFacetsForGene(acc, parameterStableId, ImageDTO.OMERO_ID,
                    ImageDTO.JPEG_URL, ImageDTO.THUMBNAIL_URL, topLevelField,
                    ImageDTO.PARAMETER_ASSOCIATION_NAME, ImageDTO.PARAMETER_ASSOCIATION_VALUE,
                    ImageDTO.ZYGOSITY, ImageDTO.SEX, ImageDTO.ALLELE_SYMBOL, ImageDTO.DOWNLOAD_URL,
                    ImageDTO.IMAGE_LINK, ImageDTO.ANATOMY_ID, ImageDTO.UBERON_ID, ImageDTO.EFO_ID);
        }

    }
    SolrDocumentList imagesResponse = laczResponse.getResults();
    List<FacetField> fields = laczResponse.getFacetFields();
    // we have the unique ma top level terms associated and all the images
    // now we need lists of images with these top level ma terms in their
    // annotation
    Map<String, SolrDocumentList> expFacetToDocs = new HashMap<>();
    Map<String, Boolean> haveImpcImages = new HashMap<>();
    expFacetToDocs.put(noTopTermId, new SolrDocumentList());

    for (SolrDocument doc : imagesResponse) {
        List<String> tops = getListFromCollection(doc.getFieldValues(topLevelField));

        // work out list of uberon/efo ids with/without expressions
        // noTopLevelCount.setCount(c);
        if (tops.isEmpty()) {// if no top level found this image then add it to the "No top level" term docs so we can display orphaned terms and images
            expFacetToDocs.get(noTopTermId).add(doc);
        } else {

            for (String top : tops) {
                SolrDocumentList list = null;
                if (!expFacetToDocs.containsKey(top)) {
                    expFacetToDocs.put(top, new SolrDocumentList());
                }
                list = expFacetToDocs.get(top);
                list.add(doc);
            }
        }
    }

    List<Count> topLevelAnatomyTerms = new ArrayList<>();
    List<Count> filteredTopLevelAnatomyTerms = new ArrayList<>();
    // if (fields.get(0).getValues().size() > 0) {

    topLevelAnatomyTerms.addAll(fields.get(0).getValues());
    if (expFacetToDocs.get(noTopTermId).size() > 0) {// only add this
        // facet for no
        // top levels
        // found if
        // there are any
        Count dummyCountForImagesWithNoHigherLevelAnatomy = new Count(new FacetField(noTopTermId), noTopTermId,
                expFacetToDocs.get(noTopTermId).size());
        topLevelAnatomyTerms.add(dummyCountForImagesWithNoHigherLevelAnatomy);
    }

    if (topMaNameFilter != null) {
        for (Count topLevel : topLevelAnatomyTerms) {
            if (topLevel.getName().equals(topMaNameFilter)) {
                filteredTopLevelAnatomyTerms.add(topLevel);
            }
        }
    } else {
        filteredTopLevelAnatomyTerms = topLevelAnatomyTerms;
    }

    for (Count count : filteredTopLevelAnatomyTerms) {
        Boolean hasImages = false;
        if (count.getCount() > 0) {
            hasImages = true;
        }
        haveImpcImages.put(count.getName(), hasImages);

    }

    ImageServiceUtil.sortHigherLevelTermCountsAlphabetically(filteredTopLevelAnatomyTerms);
    ImageServiceUtil.sortDocsByExpressionAlphabetically(expFacetToDocs);

    ExpressionImagesBean bean = null;
    //      if (parameterStableId.contains("EZ")) {//embryo

    //         model.addAttribute("impcEmbryoExpressionImageFacets", filteredTopLevelAnatomyTerms);
    //         model.addAttribute("haveImpcEmbryoImages", haveImpcImages);
    //         model.addAttribute("impcEmbryoExpressionFacetToDocs", expFacetToDocs);
    bean = new ExpressionImagesBean(filteredTopLevelAnatomyTerms, haveImpcImages, expFacetToDocs);
    //      } else {
    //         model.addAttribute("impcAdultExpressionImageFacets", filteredTopLevelAnatomyTerms);
    //         model.addAttribute("haveImpcAdultImages", haveImpcImages);
    //         model.addAttribute("impcAdultExpressionFacetToDocs", expFacetToDocs);
    //      }
    // }
    return bean;
}

From source file:org.opencommercesearch.FacetManagerTest.java

License:Apache License

@Test
public void testGetFacetNameFacetField() {
    addFacets();//from www . j av  a  2  s. c  o  m
    FacetField facetField = new FacetField("facetName");
    assertEquals("facetName", manager.getFacetName(facetField));

    facetField = new FacetField("rangeName");
    assertEquals("rangeName", manager.getFacetName(facetField));
}

From source file:org.opencommercesearch.FacetManagerTest.java

License:Apache License

@Test
public void testIsMultiSelectFacet() {
    addFacets();//from w  w w .  j a  va  2  s.co m
    when(fieldFacet.getPropertyValue(FacetProperty.IS_MULTI_SELECT)).thenReturn(false);
    assertFalse((Boolean) manager.isMultiSelectFacet(new FacetField("fieldName")));

    when(fieldFacet.getPropertyValue(FacetProperty.IS_MULTI_SELECT)).thenReturn(true);
    assertTrue((Boolean) manager.isMultiSelectFacet(new FacetField("fieldName")));

    assertFalse((Boolean) manager.isMultiSelectFacet(new FacetField("sdfjk")));

    FacetField facetField = null;
    assertFalse((Boolean) manager.isMultiSelectFacet(facetField));
}