List of usage examples for org.apache.solr.client.solrj SolrQuery setFacet
public SolrQuery setFacet(boolean b)
From source file:org.gbif.common.search.builder.SolrQueryBuilder.java
License:Apache License
/** * Helper method that sets the parameter for a faceted query. * /*from w w w .j a va2 s .c o m*/ * @param searchRequest the searchRequest used to extract the parameters * @param solrQuery this object is modified by adding the facets parameters */ private void applyFacetSettings(FacetedSearchRequest<P> searchRequest, SolrQuery solrQuery) { final BiMap<P, String> facetFieldsMapInv = facetFieldsPropertiesMap.inverse(); if (!searchRequest.getFacets().isEmpty()) { // Only show facets that contains at least 1 record solrQuery.setFacet(true); // defaults if not overridden on per field basis solrQuery.setFacetMinCount(Objects.firstNonNull(searchRequest.getFacetMinCount(), DEFAULT_FACET_COUNT)); solrQuery.setFacetMissing(DEFAULT_FACET_MISSING); solrQuery.setFacetSort(DEFAULT_FACET_SORT.toString().toLowerCase()); for (final P facet : searchRequest.getFacets()) { if (!facetFieldsMapInv.containsKey(facet)) { LOG.warn("{} is no valid facet. Ignore", facet); continue; } final String field = facetFieldsMapInv.get(facet); if (searchRequest.isMultiSelectFacets()) { // use exclusion filter with same name as used in filter query // http://wiki.apache.org/solr/SimpleFacetParameters#Tagging_and_excluding_Filters solrQuery.addFacetField(FACET_FILTER_EX.replace(TAG_FIELD_PARAM, field)); } else { solrQuery.addFacetField(field); } FacetField fieldDef = facetFieldDefs.get(field); if (fieldDef.missing() != DEFAULT_FACET_MISSING) { solrQuery.setParam(perFieldParamName(field, PARAM_FACET_MISSING), fieldDef.missing()); } if (fieldDef.sort() != DEFAULT_FACET_SORT) { solrQuery.setParam(perFieldParamName(field, PARAM_FACET_SORT), fieldDef.sort().toString().toLowerCase()); } setFacetMethod(solrQuery, field, fieldDef.method()); } } }
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);/* ww w.j a v a 2 s . 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 {/* www . j av a 2s. 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.hbird.business.archive.solr.SolrProducer.java
License:Apache License
private List<EntityInstance> doInitializationRequest(DataRequest body, String request) { SolrQuery query = new SolrQuery(request); query.setRows(1);/* ww w .j a v a2 s .co m*/ query.setSortField(endpoint.getSortField(), endpoint.getSortOrder()); /** Configure facets. */ query.setFacet(true); query.setQuery(request); query.setFacetSort(StandardArguments.COUNT); query.setFacetLimit(-1); query.setFacetMissing(false); query.setFacetMinCount(1); query.addFacetField(StandardArguments.NAME); query.setQueryType("basic"); List<EntityInstance> results = new ArrayList<EntityInstance>(); QueryResponse response; try { response = endpoint.getServer().query(query); if (response.getStatus() != 0) { LOG.error("Failed to execute retrieval request. Failed with status '{}'.", response.getStatus()); } if (response.getFacetFields() != null) { /** For each facet, retrieve 'rows' samples. */ for (FacetField facetfield : response.getFacetFields()) { if (facetfield.getValues() != null) { LOG.info("Found " + facetfield.getValueCount() + " entries for facet value " + facetfield.getName()); for (Count count : facetfield.getValues()) { String applicableTo = ""; if (body.hasArgumentValue(StandardArguments.APPLICABLE_TO)) { applicableTo = body.getArgumentValue(StandardArguments.APPLICABLE_TO, String.class); } SolrQuery sampleQuery = new SolrQuery("name:\"" + count.getName() + "\"" + createTimestampElement(body.getFrom(), body.getTo()) + createIsApplicableToElement(applicableTo)); LOG.info("Using sample query '" + sampleQuery + "' to get facet " + count.getName()); sampleQuery.setRows(body.getRows()); sampleQuery.setSortField(StandardArguments.TIMESTAMP, ORDER.desc); sampleQuery.setQueryType("basic"); for (EntityInstance newObj : retrieve(sampleQuery)) { results.add(newObj); LOG.info("Added object '" + newObj.getID() + "'"); } } } } } } catch (Exception e) { LOG.error("Failed to handle initialization request; query: '{}'.", request, e); } return results; }
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!"); }/* w w w . j a va 2 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); solrQuery.setFacetMinCount(1);//from w ww .j a v a 2 s . c o m 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 {//from ww w . jav a2s .c o 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 w ww . j a v a 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); solrQuery.setFacetMinCount(1);/*w ww. ja v a2s . c o m*/ 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 ww w . j a v a2 s .com*/ 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; }