Package org.apache.solr.client.solrj.response

Examples of org.apache.solr.client.solrj.response.FacetField


     */
    public List<SearchFacetViewBean> buildListViewBeanStoreSearchFacet(final RequestData requestData, final StoreResponseBean storeResponseBean) throws Exception {
        final List<SearchFacetViewBean> searchFacetViewBeans = new ArrayList<SearchFacetViewBean>();
        List<FacetField> facetFields = storeResponseBean.getStoreSolrFacetFieldList();
        for (Iterator<FacetField> iterator = facetFields.iterator(); iterator.hasNext();) {
            FacetField facetField = (FacetField) iterator.next();
            searchFacetViewBeans.add(buildViewBeanStoreSearchFacet(requestData, facetField));
        }
        return searchFacetViewBeans;
    }
View Full Code Here


            for (int i = 0; i < fieldsList.size(); i++) {
                String fn = fieldsList.getName(i);
                @SuppressWarnings("unchecked")
                NamedList<Object> values = (NamedList<Object>) fieldsList.getVal(i);
                String type = (String) values.get("type");
                facetResults.add(new FacetResultImpl(new FacetField(fn), type.trim()));
            }
        } catch (SolrServerException e) {
            String msg = "SolrSearchImpl.getFacetNames: Failed to execute solr query";
            log.error(msg, e);
            throw new SearchException(msg, e);
View Full Code Here

            for (int i = 0; i < fieldsList.size(); i++) {
                String fn = fieldsList.getName(i);
                @SuppressWarnings("unchecked")
                NamedList<Object> values = (NamedList<Object>) fieldsList.getVal(i);
                String type = (String) values.get("type");
                facetResults.add(new FacetResultImpl(new FacetField(fn), type.trim()));
            }
        } catch (SolrServerException e) {
            String msg = "SolrSearchImpl.getFacetNames: Failed to execute solr query";
            log.error(msg, e);
            throw new SearchException(msg, e);
View Full Code Here

    QueryResponse rsp = server.query( query );
    assertEquals( docs.size(), rsp.getResults().getNumFound() );
   
    List<FacetField> facets = rsp.getFacetFields();
    assertEquals( 1, facets.size() );
    FacetField ff = facets.get( 0 );
    assertEquals( "features", ff.getName() );
    System.out.println( "111: "+ff.getValues() );
    // check all counts
    assertEquals( "[two (5), three (3), five (2), four (2)]", ff.getValues().toString() );
   
    // should be the same facets with minCount=0
    query.setFilterQueries( "features:two" );
    rsp = server.query( query );
    ff = rsp.getFacetField( "features" );
    assertEquals( "[two (5), four (2), five (1), three (1)]", ff.getValues().toString() );
   
    // with minCount > 3
    query.setFacetMinCount( 4 );
    rsp = server.query( query );
    ff = rsp.getFacetField( "features" );
    assertEquals( "[two (5)]", ff.getValues().toString() );

    // with minCount > 3
    query.setFacetMinCount( -1 );
    rsp = server.query( query );
    ff = rsp.getFacetField( "features" );
   
    System.out.println( rsp.getResults().getNumFound() + " :::: 444: "+ff.getValues() );
  }
View Full Code Here

        // We just want the selected comm/coll, its children/sibling collections, parent community, children community.
        // FIXME: probably encapsulate in a new method and allow for a depth parameter like community-list.
        List browseCommColl = options.addList("discovery-location");
        browseCommColl.setHead(message("xmlui.ArtifactBrowser.AdvancedSearch.filter_by.head"));
        if (this.queryResults != null) {
            FacetField fieldLocation = this.queryResults.getFacetField("location");
            if (fieldLocation != null) {
                java.util.List<FacetField.Count> values = fieldLocation.getValues();
                if (values != null) {
                    String queryString = request.getQueryString();
                    queryString = queryString != null ? queryString.replaceAll("&fq=location[:[%3A]+][ml][0-9]+", "") : queryString;
                    // Find selected community/collection.
                    String curCommCollSelectedName = "m1"; // Default
                    for (FacetField.Count v : values) {
                        if (fqs.contains(v.getAsFilterQuery())) {
                            curCommCollSelectedName = v.getName();
                            break;
                        }
                        int type = v.getName().startsWith("m") ? Constants.COMMUNITY : Constants.COLLECTION;
                        DSpaceObject commColl = DSpaceObject.find(context, type, Integer.parseInt(v.getName().substring(1)));
                        if (dso != null && commColl != null && dso.getHandle().equals(commColl.getHandle())) {
                            curCommCollSelectedName = v.getName();
                            break;
                        }
                    }
                    // UPDATE: see UPDATE above.
                    // Build list of locations (communities/collections) ordered by handle part after prefix.
                    Map<String, FacetField.Count> sortedSolrNameLocationWithValues = new TreeMap<String, FacetField.Count>();
                    for (FacetField.Count v : values) {
                        sortedSolrNameLocationWithValues.put(v.getName(), v);
                    }
                    // Default selection is "m1" (community with ID 1).
                    int curCommCollSelectedType = Constants.COMMUNITY;
                    int curCommCollSelectedID = 1;
                    if (curCommCollSelectedName != null) {
                        curCommCollSelectedType = curCommCollSelectedName.startsWith("m") ? Constants.COMMUNITY : Constants.COLLECTION;
                        curCommCollSelectedID = Integer.parseInt(curCommCollSelectedName.substring(1));
                    }
                    Map<Integer, String> sortedHandleWithSolrName = new TreeMap<Integer, String>();
                    Map<String, DSpaceObject> sortedSolrNameWithDSpaceObject = new TreeMap<String, DSpaceObject>();
                   
                    int topCommID = 1;
                    String topCommName = "m1";
                    boolean curSelectedIsTop = curCommCollSelectedName.equals(topCommName) ? true : false;
                   
                    Community mtop = Community.find(context, topCommID);
                    sortedHandleWithSolrName.put(Integer.parseInt(mtop.getHandle().split("/")[1]), topCommName);
                    sortedSolrNameWithDSpaceObject.put(topCommName, mtop);

                    Collection[] collections = mtop.getCollections();
                    for (Collection l : collections) {
                        String solrName = "l" + l.getID();
                        if (solrName.equals(curCommCollSelectedName))
                            curSelectedIsTop = true;
                        sortedHandleWithSolrName.put(Integer.parseInt(l.getHandle().split("/")[1]), solrName);
                        sortedSolrNameWithDSpaceObject.put(solrName, l);
                    }

                    Community[] communities = mtop.getSubcommunities();
                    for (Community mm : communities) {
                        String solrName = "m" + mm.getID();
                        if (solrName.equals(curCommCollSelectedName))
                            curSelectedIsTop = true;
                        sortedHandleWithSolrName.put(Integer.parseInt(mm.getHandle().split("/")[1]), solrName);
                        sortedSolrNameWithDSpaceObject.put(solrName, mm);
                    }
                    if (curSelectedIsTop == false) {
                        if (curCommCollSelectedType == Constants.COMMUNITY) {
                            Community msel = Community.find(context, curCommCollSelectedID);
                            Community[] parents = msel.getAllParents();
                            if (parents.length < 2) {
                                log.error("Something is wrong: this should not happen.");
                            }
                            Community topParent = parents[parents.length - 2];
                            curCommCollSelectedName = "m" + topParent.getID();
                        } else {
                            // Supposing Constants.COLLECTION
                            Collection lsel = Collection.find(context, curCommCollSelectedID);
                            Community firstParent = lsel.getCommunities()[0];
                            Community[] parents = firstParent.getAllParents();
                            if (parents.length == 0) {
                                //log.error("Something is wrong: this should not happen.");
                                //firstParent is a top community.
                                curCommCollSelectedName = "m" + firstParent.getID();
                            } else if (parents.length == 1) {
                                //firstParent is a second level community.
                                curCommCollSelectedName = "m" + firstParent.getID();
                            } else {
                                // get second level parent
                                Community topParent = parents[parents.length - 2];
                                curCommCollSelectedName = "m" + topParent.getID();
                            }
                        }
                    }
                    //                            Iterator<FacetField.Count> iter = sortedValues.values().iterator();
                    Iterator<String> iter = sortedHandleWithSolrName.values().iterator();
                    List facet = browseCommColl.addList(fieldLocation.getName());
                    //                            facet.setHead(message("xmlui.ArtifactBrowser.AdvancedSearch.type_" + fieldLocation.getName()));
                    facet.setHead(queryString);
                    for (int i = 0; i < this.queryArgs.getFacetLimit(); i++) {
                        if (!iter.hasNext()) {
                            break;
View Full Code Here

        QueryResponse queryResponse = query(query, filterQuery, facetField,
                max, null, null, null, facetQueries);
        if (queryResponse == null)
            return new ObjectCount[0];

        FacetField field = queryResponse.getFacetField(facetField);
        // At least make sure we have one value
        if (0 < field.getValueCount())
        {
            // Create an array for our result
            ObjectCount[] result = new ObjectCount[field.getValueCount()
                    + (showTotal ? 1 : 0)];
            // Run over our results & store them
            for (int i = 0; i < field.getValues().size(); i++)
            {
                FacetField.Count fieldCount = field.getValues().get(i);
                result[i] = new ObjectCount();
                result[i].setCount(fieldCount.getCount());
                result[i].setValue(fieldCount.getName());
            }
            if (showTotal)
View Full Code Here

        QueryResponse queryResponse = query(query, filterQuery, null, max,
                dateType, dateStart, dateEnd, null);
        if (queryResponse == null)
            return new ObjectCount[0];

        FacetField dateFacet = queryResponse.getFacetDate("time");
        // TODO: check if this cannot crash I checked it, it crashed!!!
        // Create an array for our result
        ObjectCount[] result = new ObjectCount[dateFacet.getValueCount()
                + (showTotal ? 1 : 0)];
        // Run over our datefacet & store all the values
        for (int i = 0; i < dateFacet.getValues().size(); i++)
        {
            FacetField.Count dateCount = dateFacet.getValues().get(i);
            result[i] = new ObjectCount();
            result[i].setCount(dateCount.getCount());
            result[i].setValue(getDateView(dateCount.getName(), dateType));
        }
        if (showTotal)
View Full Code Here

            facetFields.addAll(this.queryResults.getFacetDates());

            log.debug("facetFields: " + facetFields.toString());

            if (facetFields.size() > 0) {
                FacetField field = facetFields.get(0);
                java.util.List<FacetField.Count> values = field.getValues();
                if (field.getGap() != null || field.getName().endsWith(".year")) {
                    //We are dealing with dates so flip em, top date comes first
                    DEFAULT_ORDER = SolrQuery.ORDER.desc;
                } else {
                    DEFAULT_ORDER = SolrQuery.ORDER.asc;
                }

                // Build the DRI Body
                Division div = body.addDivision("browse-by-" + field.getName(), "primary");
                div.setHead(message("xmlui.ArtifactBrowser.AbstractSearch.type_" + getParameterField() + "_browse"));

                // Build the internal navigation (jump lists)
                addBrowseJumpNavigation(div, field, request);

                // Build the sort and display controls
                addBrowseControls(div, field, request);

                if (values != null && 0 < values.size()) {
                    if (getParameterOrder().equals(SolrQuery.ORDER.desc)) {
                        Collections.reverse(values);
                    }

//                    Division results = body.addDivision("browse-by-" + field.getName() + "-results", "primary");
                    Division results = div.addDivision("browse-by-" + field.getName() + "-results", this.getParameterView());

                    //results.setHead(message("xmlui.ArtifactBrowser.AbstractSearch.type_" + getParameterField() + "_browse"));

                    // Find our faceting offset
                    /*
                    int offSet = 0;
                    try {
                        offSet = Integer.parseInt(queryArgs.get(FacetParams.FACET_OFFSET));
                    } catch (NumberFormatException e) {
                        //Ignore
                    }

                    //Only show the nextpageurl if we have at least one result following our current results
                    String nextPageUrl = null;
                    if (field.getName().endsWith(".year")) {
                        offSet = Util.getIntParameter(request, "offset");
                        offSet = offSet == -1 ? 0 : offSet;

                        if ((offSet + DEFAULT_PAGE_SIZE) < values.size()) {
                            nextPageUrl = getNextPageURL(request);
                        }
                    } else {
                        if (values.size() == (DEFAULT_PAGE_SIZE + 1)) {
                            nextPageUrl = getNextPageURL(request);
                        }
                    }

                    int shownItemsMax;

                    if (field.getName().endsWith(".year")) {
                        if ((values.size() - offSet) < DEFAULT_PAGE_SIZE) {
                            shownItemsMax = values.size();
                        } else {
                            shownItemsMax = DEFAULT_PAGE_SIZE;
                        }
                    } else {
                        shownItemsMax = offSet + (DEFAULT_PAGE_SIZE < values.size() ? values.size() - 1 : values.size());

                    }
                    */

//                    results.setSimplePagination((int) queryResults.getResults().getNumFound(), offSet + 1,
//                            shownItemsMax, getPreviousPageURL(request), nextPageUrl);

//// Switching to masked pagination.
                    // Pagination variables.
//                    int itemsTotal = (int) solrResults.getNumFound();
//                    int firstItemIndex = (int) solrResults.getStart() + 1;
//                    int lastItemIndex = (int) solrResults.getStart() + solrResults.size();
//                    //if (itemsTotal < lastItemIndex)
//                    //    lastItemIndex = itemsTotal;
//                    int currentPage = (int) (solrResults.getStart() / this.queryArgs.getFacetLimit()) + 1;
//                    int pagesTotal = (int) ((solrResults.getNumFound() - 1) / this.queryArgs.getFacetLimit()) + 1;

                    int itemsTotal = values.size();
                    int firstItemIndex = (getParameterPage() - 1) * getParameterRpp() +1;
//                    int firstItemIndex = Integer.parseInt(queryArgs.get(FacetParams.FACET_OFFSET,
//                            String.valueOf((getParameterPage() - 1) * queryArgs.getFacetLimit())));
                    int lastItemIndex = firstItemIndex + getParameterRpp() - 1;
                    if (lastItemIndex > itemsTotal)
                        lastItemIndex = itemsTotal;
                    //if (itemsTotal < lastItemIndex)
                    //    lastItemIndex = itemsTotal;
                    int currentPage = getParameterPage(); //(int) (firstItemIndex / getParameterRpp()) + 1;
                    int pagesTotal = (int) ((itemsTotal - 1) / getParameterRpp()) + 1;

                    Map<String, String> parameters = new HashMap<String, String>();
                    parameters.put("page", "{pageNum}");
                    String pageURLMask = generateURL(parameters);

                    results.setMaskedPagination(itemsTotal, firstItemIndex, lastItemIndex, currentPage, pagesTotal, pageURLMask);
                    ////

                    Table singleTable = results.addTable("browse-by-" + field.getName() + "-results", lastItemIndex - firstItemIndex + 1, 1);
                    List<String> filterQueries = new ArrayList<String>();

//                    if (request.getParameterValues("fq") != null) {
//                        filterQueries = Arrays.asList(request.getParameterValues("fq"));
//                    }
                    filterQueries = Arrays.asList(getParameterFacetQueries());

                    if (field.getName().endsWith(".year")) {
                        for (int i = firstItemIndex - 1; i < lastItemIndex; i++) {
                            FacetField.Count value = values.get(i);
                            renderFacetField(request, dso, field, singleTable, filterQueries, value);
                        }
                        //TODO
View Full Code Here

            List<FacetField> facetFields = solrQueryResponse.getFacetFields();
            if(facetFields != null)
            {
                for (int i = 0; i <  facetFields.size(); i++)
                {
                    FacetField facetField = facetFields.get(i);
                    DiscoverFacetField facetFieldConfig = query.getFacetFields().get(i);
                    List<FacetField.Count> facetValues = facetField.getValues();
                    if (facetValues != null)
                    {
                        if(facetFieldConfig.getType().equals(DiscoveryConfigurationParameters.TYPE_DATE) && facetFieldConfig.getSortOrder().equals(DiscoveryConfigurationParameters.SORT.VALUE))
                        {
                            //If we have a date & are sorting by value, ensure that the results are flipped for a proper result
                           Collections.reverse(facetValues);
                        }

                        for (FacetField.Count facetValue : facetValues)
                        {
                            String displayedValue = transformDisplayedValue(context, facetField.getName(), facetValue.getName());
                            String field = transformFacetField(facetFieldConfig, facetField.getName(), true);
                            String authorityValue = transformAuthorityValue(context, facetField.getName(), facetValue.getName());
                            String sortValue = transformSortValue(context, facetField.getName(), facetValue.getName());
                            String filterValue = displayedValue;
                            if (StringUtils.isNotBlank(authorityValue))
                            {
                                filterValue = authorityValue;
                            }
View Full Code Here

        if (queryResponse == null)
        {
            return new ObjectCount[0];
        }

        FacetField field = queryResponse.getFacetField(facetField);
        // At least make sure we have one value
        if (0 < field.getValueCount())
        {
            // Create an array for our result
            ObjectCount[] result = new ObjectCount[field.getValueCount()
                    + (showTotal ? 1 : 0)];
            // Run over our results & store them
            for (int i = 0; i < field.getValues().size(); i++)
            {
                FacetField.Count fieldCount = field.getValues().get(i);
                result[i] = new ObjectCount();
                result[i].setCount(fieldCount.getCount());
                result[i].setValue(fieldCount.getName());
            }
            if (showTotal)
View Full Code Here

TOP

Related Classes of org.apache.solr.client.solrj.response.FacetField

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.