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

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

Introduction

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

Prototype

public SolrQuery setParam(String name, boolean value) 

Source Link

Usage

From source file:org.geotools.data.solr.FieldLayerMapper.java

License:Open Source License

@Override
public List<String> createTypeNames(HttpSolrServer solrServer) throws Exception {
    List<String> names = new ArrayList<>();

    SolrQuery query = new SolrQuery();
    query.setQuery("*:*");
    query.addFacetField(field);//from w  w w  . j a v a 2s. c o m
    query.setFacet(true);
    query.setFacetMinCount(1);
    query.setFacetSort(FacetParams.FACET_SORT_INDEX);
    query.setRows(0);
    query.setParam("omitHeader", true);

    QueryResponse rsp = solrServer.query(query);
    if (LOGGER.isLoggable(Level.FINE)) {
        LOGGER.log(Level.FINE, "SOLR query done: " + query.toString());
    }
    List<Count> uniqueFacetFields = rsp.getFacetFields().get(0).getValues();
    for (Count field : uniqueFacetFields) {
        names.add(field.getName());
    }
    return names;
}

From source file:org.geotools.data.solr.SolrDataStore.java

License:Open Source License

@Override
protected List<Name> createTypeNames() throws IOException {
    try {/* w  ww. j a v  a 2  s. c  o m*/
        if (typeNames == null || typeNames.isEmpty()) {
            typeNames = new ArrayList<Name>();
            SolrQuery query = new SolrQuery();
            query.setQuery("*:*");
            query.addFacetField(field);
            query.setFacet(true);
            query.setFacetMinCount(1);
            query.setFacetSort(FacetParams.FACET_SORT_INDEX);
            query.setRows(0);
            query.setParam("omitHeader", true);
            QueryResponse rsp = solrServer.query(query);
            if (LOGGER.isLoggable(Level.FINE)) {
                LOGGER.log(Level.FINE, "SOLR query done: " + query.toString());
            }
            List<Count> uniqueFacetFields = rsp.getFacetFields().get(0).getValues();
            for (Count field : uniqueFacetFields) {
                typeNames.add(new NameImpl(namespaceURI, field.getName()));
            }
        }
    } catch (Exception ex) {
        LOGGER.log(Level.SEVERE, ex.getMessage(), ex);
    }
    return typeNames;
}

From source file:org.geotools.data.solr.SolrDataStore.java

License:Open Source License

/**
 * Builds the SolrJ query with support of subset of fields, limit/offset, sorting, OGC filter
 * encoding and viewParams <br>//from ww  w  .  j  a v a2  s .c  o  m
 * The SOLR query always need the order by PK field to enable pagination and efficient data
 * retrieving <br>
 * Currently only additional "q" and "fq" SOLR parameters can be passed using vireParams, this
 * conditions are added in AND with others
 * 
 * @param featureType the feature type to query
 * @param q the OGC query to translate in SOLR request
 * 
 * @see {@link Hints#VIRTUAL_TABLE_PARAMETERS}
 * 
 */
protected SolrQuery select(SimpleFeatureType featureType, Query q) {
    SolrQuery query = new SolrQuery();
    query.setParam("omitHeader", true);
    try {
        // Column names
        if (q.getPropertyNames() != null) {
            for (String prop : q.getPropertyNames()) {
                query.addField(prop);
            }
        }
        query.setQuery("*:*");

        // Encode limit/offset, if necessary
        if (q.getStartIndex() != null && q.getStartIndex() >= 0) {
            query.setStart(q.getStartIndex());
        }
        if (q.getMaxFeatures() > 0) {
            query.setRows(q.getMaxFeatures());
        }

        // Sort
        ORDER naturalSortOrder = ORDER.asc;
        if (q.getSortBy() != null) {
            for (SortBy sort : q.getSortBy()) {
                if (sort.getPropertyName() != null) {
                    query.addSort(sort.getPropertyName().getPropertyName(),
                            sort.getSortOrder().equals(SortOrder.ASCENDING) ? ORDER.asc : ORDER.desc);
                } else {
                    naturalSortOrder = sort.getSortOrder().equals(SortOrder.ASCENDING) ? ORDER.asc : ORDER.desc;
                }
            }
        }

        // Always add natural sort by PK to support pagination
        query.addSort(getPrimaryKey(featureType.getTypeName()).getName(), naturalSortOrder);

        // Encode OGC filer
        FilterToSolr f2s = initializeFilterToSolr(featureType);
        String fq = this.field + ":" + featureType.getTypeName();
        Filter simplified = SimplifyingFilterVisitor.simplify(q.getFilter());
        String ffq = f2s.encodeToString(simplified);
        if (ffq != null && !ffq.isEmpty()) {
            fq = fq + " AND " + ffq;
        }
        query.setFilterQueries(fq);

        // Add viewpPrams
        addViewparams(q, query);

    } catch (Exception e) {
        LOGGER.log(Level.SEVERE, e.getMessage(), e);
    }
    return query;
}

From source file:org.geotools.data.solr.SolrDataStore.java

License:Open Source License

/**
 * Builds the SolrJ count query with support of limit/offset, OGC filter encoding and viewParams <br>
 * Currently only additional "q" and "fq" SOLR parameters can be passed using viewParams, this
 * conditions are added in AND with others
 * /*w  ww . j  ava2s.  c  o m*/
 * @param featureType the feature type to query
 * @param q the OGC query to translate in SOLR request
 * 
 * @see {@link Hints#VIRTUAL_TABLE_PARAMETERS}
 * 
 */
protected SolrQuery count(SimpleFeatureType featureType, Query q) {
    SolrQuery query = new SolrQuery();
    query.setParam("omitHeader", true);
    query.setQuery("*:*");
    query.setFields(this.getPrimaryKey(featureType.getName().getLocalPart()).getName());
    try {

        // Encode limit/offset, if necessary

        if (q.getStartIndex() != null && q.getStartIndex() >= 0) {
            query.setStart(q.getStartIndex());
        }
        query.setRows(0);

        // Encode OGC filer
        FilterToSolr f2s = initializeFilterToSolr(featureType);
        String fq = this.field + ":" + featureType.getTypeName();
        String ffq = f2s.encodeToString(q.getFilter());
        if (ffq != null && !ffq.isEmpty()) {
            fq = fq + " AND " + ffq;
        }
        query.setFilterQueries(fq);

        // Add viewparams parameters
        addViewparams(q, query);

    } catch (Exception e) {
        LOGGER.log(Level.SEVERE, e.getMessage(), e);
    }
    return query;
}

From source file:org.hoteia.qalingo.core.solr.service.CatalogCategorySolrService.java

License:Apache License

public CatalogCategoryResponseBean searchCatalogCategory(String searchBy, String searchText, String facetField)
        throws SolrServerException, IOException {
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setParam("rows", ROWS_DEFAULT_VALUE);

    if (StringUtils.isEmpty(searchBy)) {
        throw new IllegalArgumentException("SearchBy field can not be Empty or Blank!");
    }//from w  w w . j ava2 s.c o  m

    if (StringUtils.isEmpty(searchText)) {
        solrQuery.setQuery(searchBy + ":*");
    } else {
        solrQuery.setQuery(searchBy + ":" + searchText + "*");
    }

    if (StringUtils.isNotEmpty(facetField)) {
        solrQuery.setFacet(true);
        solrQuery.setFacetMinCount(1);
        solrQuery.setFacetLimit(8);
        solrQuery.addFacetField(facetField);
    }

    logger.debug("QueryRequest solrQuery: " + solrQuery);

    SolrRequest request = new QueryRequest(solrQuery, METHOD.POST);

    QueryResponse response = new QueryResponse(catalogCategorySolrServer.request(request),
            catalogCategorySolrServer);

    logger.debug("QueryResponse Obj: " + response.toString());

    List<CatalogCategorySolr> solrList = response.getBeans(CatalogCategorySolr.class);
    CatalogCategoryResponseBean catalogCategoryResponseBean = new CatalogCategoryResponseBean();
    catalogCategoryResponseBean.setCatalogCategorySolrList(solrList);

    if (StringUtils.isNotEmpty(facetField)) {
        List<FacetField> solrFacetFieldList = response.getFacetFields();
        catalogCategoryResponseBean.setCatalogCategorySolrFacetFieldList(solrFacetFieldList);
    }

    return catalogCategoryResponseBean;
}

From source file:org.hoteia.qalingo.core.solr.service.CatalogCategorySolrService.java

License:Apache License

public CatalogCategoryResponseBean searchCatalogCategory() throws SolrServerException, IOException {
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setParam("rows", ROWS_DEFAULT_VALUE);

    solrQuery.setQuery("*");
    solrQuery.setFacet(true);/*from   w w w .  j  av  a2  s.  com*/
    solrQuery.setFacetMinCount(1);
    solrQuery.setFacetLimit(8);
    solrQuery.addFacetField("code");

    logger.debug("QueryRequest solrQuery: " + solrQuery);

    SolrRequest request = new QueryRequest(solrQuery, METHOD.POST);

    QueryResponse response = new QueryResponse(catalogCategorySolrServer.request(request),
            catalogCategorySolrServer);

    logger.debug("QueryResponse Obj: " + response.toString());

    List<CatalogCategorySolr> solrList = response.getBeans(CatalogCategorySolr.class);
    List<FacetField> solrFacetFieldList = response.getFacetFields();

    CatalogCategoryResponseBean catalogCategoryResponseBean = new CatalogCategoryResponseBean();
    catalogCategoryResponseBean.setCatalogCategorySolrList(solrList);
    catalogCategoryResponseBean.setCatalogCategorySolrFacetFieldList(solrFacetFieldList);
    return catalogCategoryResponseBean;
}

From source file:org.hoteia.qalingo.core.solr.service.CompanySolrService.java

License:Apache License

public CompanyResponseBean searchCompany(final String searchQuery, final List<String> facetFields,
        final List<String> cities, final List<String> countries, final SolrParam solrParam)
        throws SolrServerException, IOException {
    SolrQuery solrQuery = new SolrQuery();

    if (solrParam != null) {
        if (solrParam.get("rows") != null) {
            solrQuery.setParam("rows", (String) solrParam.get("rows"));
        } else {//ww  w.j  a  va2 s . co  m
            solrQuery.setParam("rows", getMaxResult());
        }

        if (solrParam.get("sortField") != null) {
            SortField sortField = (SortField) solrParam.get("sortField");
            for (Iterator<String> iterator = sortField.keySet().iterator(); iterator.hasNext();) {
                String field = (String) iterator.next();
                solrQuery.addSortField(field, sortField.get(field));
            }
        }
    }

    if (StringUtils.isEmpty(searchQuery)) {
        throw new IllegalArgumentException("SearchQuery field can not be Empty or Blank!");
    }
    solrQuery.setQuery(searchQuery);

    if (facetFields != null && facetFields.size() > 0) {
        solrQuery.setFacet(true);
        solrQuery.setFacetMinCount(1);
        for (String facetField : facetFields) {
            solrQuery.addFacetField(facetField);
        }
    }

    if (cities != null && cities.size() > 0) {
        StringBuilder fq = new StringBuilder("city:(");
        for (int i = 0; i < cities.size(); i++) {
            String city = cities.get(i);
            fq.append('"' + city + '"');
            if (i < cities.size() - 1) {
                fq.append(" OR ");
            }
        }
        fq.append(")");
        solrQuery.addFilterQuery(fq.toString());
    }
    if (countries != null && countries.size() > 0) {
        StringBuilder fq = new StringBuilder("countryCode:(");
        for (int i = 0; i < countries.size(); i++) {
            String country = countries.get(i);
            fq.append('"' + country + '"');
            if (i < countries.size() - 1) {
                fq.append(" OR ");
            }
        }
        fq.append(")");
        solrQuery.addFilterQuery(fq.toString());
    }

    logger.debug("QueryRequest solrQuery: " + solrQuery);

    SolrRequest request = new QueryRequest(solrQuery, METHOD.POST);

    QueryResponse response = new QueryResponse(companySolrServer.request(request), companySolrServer);

    logger.debug("QueryResponse Obj: " + response.toString());

    List<CompanySolr> solrList = response.getBeans(CompanySolr.class);
    CompanyResponseBean companyResponseBean = new CompanyResponseBean();
    companyResponseBean.setCompanySolrList(solrList);

    if (facetFields != null && facetFields.size() > 0) {
        List<FacetField> solrFacetFieldList = response.getFacetFields();
        companyResponseBean.setCompanySolrFacetFieldList(solrFacetFieldList);
    }
    return companyResponseBean;
}

From source file:org.hoteia.qalingo.core.solr.service.CompanySolrService.java

License:Apache License

@Deprecated
public CompanyResponseBean searchCompany(String searchBy, String searchText, List<String> facetFields,
        List<String> cities, List<String> countries) throws SolrServerException, IOException {
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setParam("rows", getMaxResult());

    if (StringUtils.isEmpty(searchBy)) {
        throw new IllegalArgumentException("SearchBy field can not be Empty or Blank!");
    }//from  www.  j  ava  2s . c  o  m

    if (StringUtils.isEmpty(searchText)) {
        solrQuery.setQuery(searchBy + ":*");
    } else {
        solrQuery.setQuery(searchBy + ":" + searchText + "*");
    }

    if (facetFields != null && facetFields.size() > 0) {
        solrQuery.setFacet(true);
        solrQuery.setFacetMinCount(1);
        for (String facetField : facetFields) {
            solrQuery.addFacetField(facetField);
        }
    }

    if (cities != null && cities.size() > 0) {
        StringBuilder fq = new StringBuilder("city:(");
        for (int i = 0; i < cities.size(); i++) {
            String city = cities.get(i);
            fq.append('"' + city + '"');
            if (i < cities.size() - 1) {
                fq.append(" OR ");
            }
        }
        fq.append(")");
        solrQuery.addFilterQuery(fq.toString());
    }
    if (countries != null && countries.size() > 0) {
        StringBuilder fq = new StringBuilder("countryCode:(");
        for (int i = 0; i < countries.size(); i++) {
            String country = countries.get(i);
            fq.append('"' + country + '"');
            if (i < countries.size() - 1) {
                fq.append(" OR ");
            }
        }
        fq.append(")");
        solrQuery.addFilterQuery(fq.toString());
    }

    logger.debug("QueryRequest solrQuery: " + solrQuery);

    SolrRequest request = new QueryRequest(solrQuery, METHOD.POST);

    QueryResponse response = new QueryResponse(companySolrServer.request(request), companySolrServer);

    logger.debug("QueryResponse Obj: " + response.toString());

    List<CompanySolr> solrList = response.getBeans(CompanySolr.class);
    CompanyResponseBean companyResponseBean = new CompanyResponseBean();
    companyResponseBean.setCompanySolrList(solrList);

    if (facetFields != null && facetFields.size() > 0) {
        List<FacetField> solrFacetFieldList = response.getFacetFields();
        companyResponseBean.setCompanySolrFacetFieldList(solrFacetFieldList);
    }
    return companyResponseBean;
}

From source file:org.hoteia.qalingo.core.solr.service.CompanySolrService.java

License:Apache License

@Deprecated
public CompanyResponseBean searchCompany() throws SolrServerException, IOException {
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setParam("rows", getMaxResult());

    solrQuery.setQuery("*");
    solrQuery.setFacet(true);//from ww  w.java 2  s . c o m
    solrQuery.setFacetMinCount(1);
    solrQuery.addFacetField("name");

    logger.debug("QueryRequest solrQuery: " + solrQuery);

    SolrRequest request = new QueryRequest(solrQuery, METHOD.POST);

    QueryResponse response = new QueryResponse(companySolrServer.request(request), companySolrServer);

    logger.debug("QueryResponse Obj: " + response.toString());

    List<CompanySolr> solrList = response.getBeans(CompanySolr.class);
    List<FacetField> solrFacetFieldList = response.getFacetFields();
    CompanyResponseBean companyResponseBean = new CompanyResponseBean();
    companyResponseBean.setCompanySolrList(solrList);
    companyResponseBean.setCompanySolrFacetFieldList(solrFacetFieldList);
    return companyResponseBean;
}

From source file:org.hoteia.qalingo.core.solr.service.CustomerSolrService.java

License:Apache License

public CustomerResponseBean searchCustomer(String searchBy, String searchText, String facetField)
        throws IllegalArgumentException, SolrServerException, IOException {
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setParam("rows", ROWS_DEFAULT_VALUE);

    if (StringUtils.isEmpty(searchBy)) {
        throw new IllegalArgumentException("SearchBy field can not be Empty or Blank!");
    }//from   w  w  w  .  j a  v a2s.  c om

    if (StringUtils.isEmpty(searchText)) {
        solrQuery.setQuery(searchBy + ":*");
    } else {
        solrQuery.setQuery(searchBy + ":" + searchText + "*");
    }

    if (StringUtils.isNotEmpty(facetField)) {
        solrQuery.setFacet(true);
        solrQuery.setFacetMinCount(1);
        solrQuery.setFacetLimit(8);
        solrQuery.addFacetField(facetField);
    }

    logger.debug("QueryRequest solrQuery: " + solrQuery);

    SolrRequest request = new QueryRequest(solrQuery, METHOD.POST);

    QueryResponse response = new QueryResponse(customerSolrServer.request(request), customerSolrServer);

    logger.debug("QueryResponse Obj: " + response.toString());

    List<CustomerSolr> solrList = response.getBeans(CustomerSolr.class);
    CustomerResponseBean customerResponseBean = new CustomerResponseBean();
    customerResponseBean.setCustomerSolrList(solrList);

    if (StringUtils.isNotEmpty(facetField)) {
        List<FacetField> solrFacetFieldList = response.getFacetFields();
        customerResponseBean.setCustomerSolrFacetFieldList(solrFacetFieldList);
    }
    return customerResponseBean;
}