Example usage for org.apache.solr.client.solrj SolrQuery setRows

List of usage examples for org.apache.solr.client.solrj SolrQuery setRows

Introduction

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

Prototype

public SolrQuery setRows(Integer rows) 

Source Link

Usage

From source file:org.codelibs.fess.service.SearchService.java

License:Apache License

public List<Map<String, Object>> getDocumentList(final String query, final int start, final int rows,
        final FacetInfo facetInfo, final GeoInfo geoInfo, final MoreLikeThisInfo mltInfo,
        final String[] responseFields, final String[] docValuesFields, final boolean forUser) {
    if (start > queryHelper.getMaxSearchResultOffset()) {
        throw new ResultOffsetExceededException("The number of result size is exceeded.");
    }/*from   w w  w  .  j  av  a 2 s .c  o  m*/

    final long startTime = System.currentTimeMillis();

    final SolrGroup solrGroup = solrGroupManager.getSolrGroup(QueryType.QUERY);

    QueryResponse queryResponse = null;
    final SolrQuery solrQuery = new SolrQuery();
    final SearchQuery searchQuery = queryHelper.build(query, forUser);
    final String q = searchQuery.getQuery();
    if (StringUtil.isNotBlank(q)) {
        // fields
        solrQuery.setFields(responseFields);
        // query
        solrQuery.setQuery(q);
        solrQuery.setStart(start);
        solrQuery.setRows(rows);
        solrQuery.set("mm", searchQuery.getMinimumShouldMatch());
        solrQuery.set("defType", searchQuery.getDefType());
        for (final Map.Entry<String, String[]> entry : queryHelper.getQueryParamMap().entrySet()) {
            solrQuery.set(entry.getKey(), entry.getValue());
        }
        // filter query
        if (searchQuery.hasFilterQueries()) {
            solrQuery.addFilterQuery(searchQuery.getFilterQueries());
        }
        // sort
        final SortField[] sortFields = searchQuery.getSortFields();
        if (sortFields.length != 0) {
            for (final SortField sortField : sortFields) {
                solrQuery.addSort(sortField.getField(),
                        Constants.DESC.equals(sortField.getOrder()) ? SolrQuery.ORDER.desc
                                : SolrQuery.ORDER.asc);
            }
        } else if (queryHelper.hasDefaultSortFields()) {
            for (final SortField sortField : queryHelper.getDefaultSortFields()) {
                solrQuery.addSort(sortField.getField(),
                        Constants.DESC.equals(sortField.getOrder()) ? SolrQuery.ORDER.desc
                                : SolrQuery.ORDER.asc);
            }
        }
        // highlighting
        if (queryHelper.getHighlightingFields() != null && queryHelper.getHighlightingFields().length != 0) {
            for (final String hf : queryHelper.getHighlightingFields()) {
                solrQuery.addHighlightField(hf);
            }
            solrQuery.setHighlightSnippets(queryHelper.getHighlightSnippetSize());
        }
        // shards
        if (queryHelper.getShards() != null) {
            solrQuery.setParam("shards", queryHelper.getShards());
        }
        // geo
        if (geoInfo != null && geoInfo.isAvailable()) {
            solrQuery.addFilterQuery(geoInfo.toGeoQueryString());
            final String additionalGeoQuery = queryHelper.getAdditionalGeoQuery();
            if (StringUtil.isNotBlank(additionalGeoQuery)) {
                solrQuery.addFilterQuery(additionalGeoQuery);
            }
        }
        // facets
        if (facetInfo != null) {
            solrQuery.setFacet(true);
            if (facetInfo.field != null) {
                for (final String f : facetInfo.field) {
                    if (queryHelper.isFacetField(f)) {
                        solrQuery.addFacetField(f);
                    } else {
                        throw new FessSolrQueryException("EFESS0002", new Object[] { f });
                    }
                }
            }
            if (facetInfo.query != null) {
                for (final String fq : facetInfo.query) {
                    final String facetQuery = queryHelper.buildFacetQuery(fq);
                    if (StringUtil.isNotBlank(facetQuery)) {
                        solrQuery.addFacetQuery(facetQuery);
                    } else {
                        throw new FessSolrQueryException("EFESS0003", new Object[] { fq, facetQuery });
                    }
                }
            }
            if (facetInfo.limit != null) {
                solrQuery.setFacetLimit(Integer.parseInt(facetInfo.limit));
            }
            if (facetInfo.minCount != null) {
                solrQuery.setFacetMinCount(Integer.parseInt(facetInfo.minCount));
            }
            if (facetInfo.missing != null) {
                solrQuery.setFacetMissing(Boolean.parseBoolean(facetInfo.missing));
            }
            if (facetInfo.prefix != null) {
                solrQuery.setFacetPrefix(facetInfo.prefix);
            }
            if (facetInfo.sort != null && queryHelper.isFacetSortValue(facetInfo.sort)) {
                solrQuery.setFacetSort(facetInfo.sort);
            }
        }
        // mlt
        if (mltInfo != null) {
            final String mltField = queryHelper.getMoreLikeThisField(mltInfo.field);
            if (mltField != null) {
                solrQuery.set("mlt", true);
                if (mltInfo.count != null) {
                    solrQuery.set("mlt.count", Integer.parseInt(mltInfo.count));
                }
                solrQuery.set("mlt.fl", mltField);
            }
        }

        if (queryHelper.getTimeAllowed() >= 0) {
            solrQuery.setTimeAllowed(queryHelper.getTimeAllowed());
        }
        final Set<Entry<String, String[]>> paramSet = queryHelper.getRequestParameterSet();
        if (!paramSet.isEmpty()) {
            for (final Map.Entry<String, String[]> entry : paramSet) {
                solrQuery.set(entry.getKey(), entry.getValue());
            }
        }

        if (docValuesFields != null) {
            for (final String docValuesField : docValuesFields) {
                solrQuery.add(Constants.DCF, docValuesField);
            }
        }

        queryResponse = solrGroup.query(solrQuery, SolrRequest.METHOD.POST);
    }
    final long execTime = System.currentTimeMillis() - startTime;

    final QueryResponseList queryResponseList = ComponentUtil.getQueryResponseList();
    queryResponseList.init(queryResponse, rows);
    queryResponseList.setSearchQuery(q);
    queryResponseList.setSolrQuery(solrQuery.toString());
    queryResponseList.setExecTime(execTime);
    return queryResponseList;
}

From source file:org.craftercms.commerce.client.itest.ProductServiceTest.java

License:Open Source License

@Test
public void testSave() throws Exception {

    String id = "product-2003";
    Date now = new Date();
    String creator = "Spiderman";
    String modifier = "The Hulk";
    long numFound;

    SolrQuery solrQuery = new SolrQuery(BaseType.SOLR_ID_FIELD + ":" + id);
    solrQuery.setRows(1);

    numFound = solrServer.query(solrQuery).getResults().getNumFound();
    Assert.assertEquals(0, numFound);/*from ww  w. ja  va  2s.  c  o  m*/

    Product product = new Product();
    product.setId(id);
    product.setCreationDate(now);
    product.setCreatedBy(creator);
    product.setLastModifiedBy(modifier);
    ServiceResponse<Product> response = productService().save(product);
    Assert.assertEquals(true, response.isSuccess());

    SolrDocumentList solrDocList = solrServer.query(solrQuery).getResults();
    Assert.assertEquals(1, solrDocList.getNumFound());
    Assert.assertEquals(1, solrDocList.size());

    SolrDocument solrDoc = solrDocList.get(0);
    Assert.assertEquals(id, solrDoc.getFieldValue(BaseType.SOLR_ID_FIELD));
    Assert.assertEquals(now, solrDoc.getFieldValue(BaseType.SOLR_CREATION_DATE_FIELD));
    Assert.assertEquals(creator, solrDoc.getFieldValue(BaseType.SOLR_CREATED_BY_ID_FIELD));
    Assert.assertEquals(modifier, solrDoc.getFieldValue(BaseType.SOLR_LAST_MODIFIED_BY_ID_FIELD));

}

From source file:org.craftercms.commerce.client.itest.ProductServiceTest.java

License:Open Source License

@Test
public void testSaveAll() throws Exception {

    String id1 = "product-2003";
    String id2 = "product-2004";
    Date now = new Date();
    String creator = "Spiderman";
    String modifier = "The Hulk";
    long numFound;

    SolrQuery solrQuery = new SolrQuery(
            BaseType.SOLR_ID_FIELD + ":" + id1 + " OR " + BaseType.SOLR_ID_FIELD + ":" + id2);
    solrQuery.setRows(2);

    numFound = solrServer.query(solrQuery).getResults().getNumFound();
    Assert.assertEquals(0, numFound);//from  w w w  .j  a v a2s.  co  m

    Product p1 = new Product();
    p1.setId(id1);
    p1.setCreationDate(now);
    p1.setCreatedBy(creator);
    p1.setLastModifiedBy(modifier);

    Product p2 = new Product();
    p2.setId(id2);
    p2.setCreationDate(now);
    p2.setCreatedBy(creator);
    p2.setLastModifiedBy(modifier);

    Product[] newProducts = { p1, p2 };

    ServiceResponse<Product> response = productService().saveAll(newProducts);
    Assert.assertEquals(true, response.isSuccess());

    numFound = solrServer.query(solrQuery).getResults().getNumFound();
    Assert.assertEquals(2, numFound);
}

From source file:org.craftercms.commerce.client.itest.ProductServiceTest.java

License:Open Source License

@Test
public void testDelete() throws Exception {

    String randomProductId = "product-" + solrTestDataService.randomIndex();

    SolrQuery solrQuery = new SolrQuery(BaseType.SOLR_ID_FIELD + ":" + randomProductId);
    solrQuery.setRows(1);

    long numFound = solrServer.query(solrQuery).getResults().getNumFound();
    Assert.assertEquals(1, numFound);//from w w  w . j a v  a2 s  .  c o  m

    Product product = new Product();
    product.setId(randomProductId);

    ServiceResponse<Product> response = productService().delete(product);
    Assert.assertEquals(true, response.isSuccess());

    numFound = solrServer.query(solrQuery).getResults().getNumFound();
    Assert.assertEquals(0, numFound);
}

From source file:org.craftercms.commerce.client.itest.ProductServiceTest.java

License:Open Source License

@Test
public void testDeleteAll() throws Exception {

    SolrQuery solrQuery = new SolrQuery(BaseType.SOLR_TYPE_FIELD + ":" + Product.class.getName());
    solrQuery.setRows(0);

    long numFound = solrServer.query(solrQuery).getResults().getNumFound();
    Assert.assertEquals(SolrTestDataService.TEST_DOCUMENT_COUNT, numFound);

    ServiceResponse<Product> response = productService().deleteAll();
    Assert.assertEquals(true, response.isSuccess());

    numFound = solrServer.query(solrQuery).getResults().getNumFound();
    Assert.assertEquals(0, numFound);/*from   w ww .  j  a v  a  2s  .  c  o  m*/

}

From source file:org.craftercms.commerce.server.solr.AbstractSolrCRUDService.java

License:Open Source License

public ServiceResponse<T> findByQuery(@PathVariable String query, @PathVariable int offset,
        @PathVariable int maxResults) throws CrafterCommerceException {
    if (LOGGER.isDebugEnabled()) {
        LOGGER.debug("About to find entities for query: " + query);
    }// ww  w  .ja  va 2 s. co m
    try {
        String solrQueryStr = queryConverter.toSolrQuery(query);
        SolrQuery solrQuery = new SolrQuery(solrQueryStr);
        solrQuery.setStart(offset);
        solrQuery.setRows(maxResults);
        QueryResponse qResponse = solrServer.query(solrQuery);
        Set<T> entities = toEntities(qResponse);
        ServiceResponse<T> sResponse = new ServiceResponse<T>();
        sResponse.setReturnedClass(getTypeArgument());
        sResponse.setSuccess(true);
        sResponse.setEntities(entities);
        sResponse.setCount(qResponse.getResults().getNumFound());
        String message = ReturnMessageProvider.findByQueryMessage(getTypeArgument(), query, entities.size());
        sResponse.setMessage(message);
        return sResponse;
    } catch (Exception e) {
        LOGGER.error("Failed to find entities by query for query = " + query, e);
        return new ServiceResponse<T>(getTypeArgument(), false, e.getMessage());
    }
}

From source file:org.craftercms.commerce.server.solr.AbstractSolrCRUDService.java

License:Open Source License

public ServiceResponse<T> findByQuery(String query, int offset, int maxResults, String... facet)
        throws CrafterCommerceException {
    try {// w  w w. j ava  2  s.  c  o  m
        String solrQueryStr = queryConverter.toSolrQuery(query);
        SolrQuery solrQuery = new SolrQuery(solrQueryStr);
        solrQuery.setStart(offset);
        solrQuery.setRows(maxResults);
        // construct facet parameters
        if (facet.length > 0) {
            solrQuery.setFacet(true);
            solrQuery.setFacetMinCount(2); // only get the facet if there are 2 or more values
            for (String _facet : facet) {
                solrQuery.addFacetField(_facet);
            }
        }
        // execute Solr query
        QueryResponse response = solrServer.query(solrQuery);
        Set<T> entities = toEntities(response);
        Set<Facet> facets = toFacets(response);
        // create the service response
        ServiceResponse<T> serviceResponse = new ServiceResponse<T>();
        serviceResponse.setSuccess(true);
        serviceResponse.setEntities(entities);
        serviceResponse.setCount(response.getResults().getNumFound());
        serviceResponse.setFacets(facets);
        String msg = ReturnMessageProvider.findByQueryMessage(getTypeArgument(), query, entities.size());
        serviceResponse.setMessage(msg);
        // return the response
        return serviceResponse;
    } catch (Exception e) {
        LOGGER.error("Failed to find entities by query for query = " + query, e);
        return new ServiceResponse<T>(getTypeArgument(), false, e.getMessage());
    }
}

From source file:org.craftercms.commerce.server.solr.AbstractSolrCRUDService.java

License:Open Source License

public ServiceResponse<T> findAll() throws CrafterCommerceException {
    try {//from  ww w .  ja v a2s  .co m
        String solrQueryStr = BaseType.SOLR_TYPE_FIELD + ":" + getTypeArgument().getName();
        SolrQuery solrQuery = new SolrQuery(solrQueryStr);
        solrQuery.setRows((int) count().getCount());

        SolrDocumentList solrDocList = solrServer.query(solrQuery).getResults();

        Set<T> entities = new LinkedHashSet<T>(solrDocList.size());
        for (SolrDocument _solrDoc : solrDocList) {
            entities.add(documentObjectBinder.getBean(getTypeArgument(), _solrDoc));
        }

        ServiceResponse<T> sResponse = new ServiceResponse<T>();
        sResponse.setSuccess(true);
        sResponse.setReturnedClass(getTypeArgument());
        sResponse.setEntities(entities);
        sResponse.setMessage(ReturnMessageProvider.findAllMessage(getTypeArgument(), entities));

        return sResponse;
    } catch (Exception e) {
        LOGGER.error("Failed to find all entities", e);
        return new ServiceResponse<T>(getTypeArgument(), false, e.getMessage());
    }
}

From source file:org.craftercms.commerce.server.solr.AbstractSolrCRUDService.java

License:Open Source License

public ServiceResponse<T> count() throws CrafterCommerceException {
    try {// ww w .  j  a  v a2 s .c om
        String solrQueryStr = BaseType.SOLR_TYPE_FIELD + ":" + getTypeArgument().getName();
        SolrQuery solrQuery = new SolrQuery(solrQueryStr);
        solrQuery.setRows(0);

        long numfound = solrServer.query(solrQuery).getResults().getNumFound();

        ServiceResponse<T> sResponse = new ServiceResponse<T>();
        sResponse.setSuccess(true);
        sResponse.setReturnedClass(getTypeArgument());
        sResponse.setCount(numfound);
        sResponse.setMessage(ReturnMessageProvider.countMessage(getTypeArgument(), numfound));

        return sResponse;
    } catch (Exception e) {
        LOGGER.error("Failed to count all entities", e);
        return new ServiceResponse<T>(getTypeArgument(), false, e.getMessage());
    }
}

From source file:org.craftercms.commerce.server.solr.AbstractSolrCRUDService.java

License:Open Source License

public ServiceResponse<T> exists(@PathVariable String id) throws CrafterCommerceException {
    try {//ww w.j  a v a 2  s .  c  o m
        SolrQuery solrQuery = new SolrQuery(BaseType.SOLR_ID_FIELD + ":" + id);
        solrQuery.setRows(0);
        long numfound = solrServer.query(solrQuery).getResults().getNumFound();
        boolean exists = (numfound != 0) ? true : false;
        return new ServiceResponse<T>(getTypeArgument(), true, exists,
                ReturnMessageProvider.existsMessage(getTypeArgument(), id, exists));
    } catch (Exception e) {
        LOGGER.error("Failed check if entity exists for id = " + id, e);
        return new ServiceResponse<T>(getTypeArgument(), false, e.getMessage());
    }
}